обновление в доктрине с помощью специальных символов

У меня есть эта ошибка, когда я пытаюсь обновить свое значение с помощью специального символа

Сообщение: 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();
}

0

Решение

Вы должны использовать подготовленные операторы, а запрос на обновление должен выглядеть примерно так:

Doctrine_Query::create()
->update('Commentaire c')
->set('c.commentaire', '?', $commentaire)
->where('c.idcommentaire = ?', $id)
->execute();

Так где у вас есть переменная положить ? там и передать параметр в качестве аргумента. Таким образом, доктрина создаст подготовленные операторы, и переменные будут экранированы правильно (и это также более эффективно).

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]