2014-06-11 75 views
1

Doctrine2與Symfony的:DELETE FROM articles where article_id =?限制?

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

我得到的錯誤:發生

例外,而執行「DELETE FROM文章 WHERE的article_id =? LIMIT?'與參數[1,2]:SQLSTATE [42000]:

語法錯誤或訪問衝突:1064您的SQL語句中存在錯誤;檢查對應於你的MySQL服務器版本 在線路附近使用「」 2「」正確的語法手冊3

如何傳遞參數的極限條款?

我更喜歡不使用bindValue函數,而是使用executeUpdate函數。

+0

也許我不知道如何設置您的數據庫,但不應該文章ID是唯一的數字?如果是這樣,你是否真的需要限制? – Jhecht

+0

article_id不是唯一的。所以是的,我需要這個限制。 – lepix

+0

如果您計劃刪除特定數量的行,那麼在日期列中使用某種形式的排序會不明智嗎? – Lucas

回答

1

的問題是,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

您仍可以使用以下語法執行更新,這會將第一個值插入到文章中,然後將第二個值插入到限制中。未經測試,但應該工作

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

不,它不起作用,它顯示相同的錯誤。 – lepix

相關問題