2015-04-16 2 views
0

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

Сообщение: SQLSTATE [42000]: Ошибка синтаксиса или нарушение доступа: 1064 У вас есть ошибка в вашем SQL синтаксис; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 't' WHERE (idcommentaire = 117) 'в строке 1. Failed Query: "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(); 
} 

ответ

1

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

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

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

+0

Работы. Спасибо! –

Смежные вопросы