Добавьте обратную галочку, то есть "` "правильно. Напишите свое имя getTable и имя столбца между обратными чертами.
от вопрос уже есть ответ здесь:
Синтаксическая ошибка из-за использования зарезервированного слова в качестве имени таблицы или столбца в MySQL 1 ответЯ просмотрел все другие сообщения StackOverflow (и Google) с той же проблемой, но ни одна из них, похоже, не решала мою проблему.
Я использую PDO и PHP.
Мой код:
$vals = array(
':from' => $email,
':to' => $recipient,
':name' => $name,
':subject' => $subject,
':message' = >$message
);
print_r($vals);
try {
$pdo = new PDOConfig();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM messages WHERE `message` LIKE :message";
$q = $pdo->prepare($sql);
$q->execute(array(':message' => $vals[':message']));
$resp = $q->fetchAll();
foreach ($resp as $row) {
throw new Exception('Please do not post the same message twice!');
}
$sql = "INSERT INTO messages (from, to, name, subject, message) VALUES (:from, :to, :name, :subject, :message)";
$q = $pdo->prepare($sql);
$q->execute($vals);
}
catch(PDOException $e) {
echo $e->getMessage();
}
и первый print_r дает
Array ( [:from] => [email protected]
[:to] => [email protected]
[:name] => abc
[:subject] => abc
[:message] => abc )
что ожидается (никто не нулевой)
но выводит ошибку
SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1064 В синтаксисе SQL есть ошибка; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с «от, до, имя, тема, сообщение» ЗНАЧЕНИЯ («[email protected]», «[email protected]» в строке 1
Не знаю, как это исправить. есть идеи?