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
函数。
答案 0 :(得分:2)
问题是executeUpdate
与setParameter
不同,会自动推断您将哪种类型设置为值,并将所有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)
);