У меня есть эта ошибка, когда я пытаюсь обновить свое значение с помощью специального символа
Сообщение: SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 В синтаксисе SQL есть ошибка; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с ‘t’ WHERE (idcommentaire = 117) ‘в строке 1. Неудачный запрос: «UPDATE commentaire SET commentaire =’ test’t ‘WHERE (idcommentaire = 117 )»
UPDATE commentaire SET commentaire = 'test't' WHERE (idcommentaire = 117)
^
Почему учение не управляет спецсимволами?
Моя функция:
static public function modifierCommentaire($id, $commentaire)
{
$req = Doctrine_Query::create()
->update('Commentaire c')
->set('c.commentaire ', $commentaire)
->where("c.idcommentaire=$id")
->execute();
}
Вы должны использовать подготовленные операторы, а запрос на обновление должен выглядеть примерно так:
Doctrine_Query::create()
->update('Commentaire c')
->set('c.commentaire', '?', $commentaire)
->where('c.idcommentaire = ?', $id)
->execute();
Так где у вас есть переменная положить ?
там и передать параметр в качестве аргумента. Таким образом, доктрина создаст подготовленные операторы, и переменные будут экранированы правильно (и это также более эффективно).
Других решений пока нет …