使用特殊字符在Doctrine中更新

时间:2015-04-16 08:15:10

标签: php doctrine doctrine-1.2

当我尝试使用特殊字符

更新我的值时出现此错误
  

消息:SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;检查与您的MySQL服务器版本相对应的手册,以获得正确的语法,以便在附近使用#t;# WHERE(idcommentaire = 117)'在第1行。失败的查询:"更新评论设置评论='测试' 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 个答案:

答案 0 :(得分:2)

您应该使用预准备语句,更新查询应如下所示:

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

所以你有一个变量放在那里?并将参数作为参数传递。这样,doctrine将创建预处理语句,并且变量将被正确转义(并且它也更有效)。