Mysql ошибка, когда я пытаюсь сохранить в базе данных - Symfony2 - возможно Дата ошибка?

0

У меня есть следующий код:

$dateCounter=1;

    foreach($teamsA as $teamHome){
        foreach($teamsACopy as $teamAway){
            if($teamHome!=$teamAway){
                $tactic1 = $doctrine->getRepository('LoginLoginBundle:Tactics')
                        ->findByteamTeamid($teamHome->getTeamid());
                $tactic2 = $doctrine->getRepository('LoginLoginBundle:Tactics')
                        ->findByteamTeamid($teamAway->getTeamid());
                $match = new Match();
                $match->setAwayteam($teamAway->getName());
                $match->setHometeam($teamHome->getName());
                $match->setIsplayed(false);
                $match->setSeasonSeasonid($season);
                $date = new DateTime(date('Y-m-d H:i:s'));
                $date->add(new DateInterval('P'.$dateCounter.'D'));
                $match->setDate($date);
                $dateCounter++;
                $tacticMatchHome = new Tactics();
                $tacticMatchHome = $tactic1[0];
                $tacticMatchHome->setMatchMatchid($match);
                $tacticMatchAway = new Tactics();
                $tacticMatchAway = $tactic2[0];
                $tacticMatchAway->setMatchMatchid($match);
                $em->persist($match);
                $em->flush();
                $em->persist($tacticMatchHome);
                $em->flush();
                $em->persist($tacticMatchAway);
                $em->flush();
            }
        }
    }

И я получаю следующую ошибку, когда она пытается сохранить ее в базе данных:

[Doctrine\DBAL\DBALException]
An exception occurred while executing 'INSERT INTO match (date, homeTeam, awayTeam, winner, isPlayed, score, season_seasonid) VALUES (?, ?, ?, ?, ?, ?, ?)' with params ["2014-11-16 13:50:24", "FC Beer", "Soccerteam11", null, 0, null, 9]:
SQLSTATE[42000]: Syntax error or acces violation: 1064 You have an error in your SQL syntax: check the manual that corresponds to your MySQL server version for the right syntax to use near 'match (date, homeTeam, awayTeam, winner, isPlayed, score, season_seasonid) VALUE' at line1

Возможно ли, что я получаю эту ошибку, потому что моя дата не в правильном формате? Если да, то как я могу преобразовать его в соответствующий формат?

Я использую Symfony2 и PHP версии 5.4

Теги:
date
mysql-error-1064

2 ответа

0
Лучший ответ

Изменить имя таблицы для другого - это зарезервированное слово. Не создавайте новый объект только для завершения кода. заменить $tacticMatchHome = new Tactics(); с /** @var $tacticMatchHome Tactics */. И используйте findOneBy вместо findBy;) И, наконец, вы можете сбросить один раз в конце кода.

  • 0
    Почему я должен заменить $ tacticMatchHome? Просто интересно: p
  • 0
    Потому что в следующей строке вы устанавливаете другой объект для этой переменной. Создание нового объекта только для завершения кода - это не очень хорошая практика с точки зрения производительности и вообще с точки зрения «чистого кода» :)
Показать ещё 1 комментарий
1

match - зарезервированное ключевое слово MySQL. Если вы собираетесь называть таблицу "match", вы должны обернуть ее в тики:

'INSERT INTO 'match' (date, homeTeam, awayTeam, winner, isPlayed, score, season_seasonid) VALUES (?, ?, ?, ?, ?, ?, ?)' 
  • 0
    И чтобы Symphony делал это при построении запроса (он не делает это автоматически), либо обратные галочки должны быть уже включены в определение данных, либо должен использоваться QuoteStrategy : doctrine-orm.readthedocs.org/ ен / последний / ссылка / ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню