删除文章WHERE article_id =?限制?

时间:2014-06-11 22:30:18

标签: php mysql symfony doctrine-orm

Doctrine2 with Symfony:

$this->get('database_connection')->executeUpdate("DELETE FROM articles 
        WHERE article_id = :article_id 
        LIMIT :quantity", 
    array(
       'article_id' => 1,
       'quantity'   => 2
));

我收到错误:

  

执行' DELETE FROM文章时发生异常   在哪里article_id =?限制?'用params [1,2]:SQLSTATE [42000]:

     

语法错误或访问冲突:1064 SQL中有错误   句法;查看与MySQL服务器版本对应的手册   正确的语法使用近' 2''在第3行

如何将参数传递给LIMIT子句?

我不想使用bindValue函数,而是使用executeUpdate函数。

2 个答案:

答案 0 :(得分:2)

问题是executeUpdatesetParameter 不同,会自动推断您将哪种类型设置为值,并将所有params威胁为字符串。因此,您应该将params显式设置为整数。

$this->get('database_connection')->executeUpdate("DELETE FROM articles 
        WHERE article_id = :article_id 
        LIMIT :quantity", 
    array(
       'article_id' => 1,
       'quantity'   => 2)
    array(
        \PDO::PARAM_INT,
        \PDO::PARAM_INT
    )
);  

答案 1 :(得分:-1)

您仍然可以使用以下语法执行更新,这会将第一个值插入到文章中,然后将第二个值插入限制中。未经测试但应该工作

$this->get('database_connection')->executeUpdate("DELETE FROM articles 
        WHERE article_id = ?
        LIMIT ?, 
    array(1,2)
);