2012-04-11 10 views
0

削除操作でCRUDにバグがある場合は誰も知っていますか? DBアダプタ:Zend_Dbはテーブル行を削除しません

$this->_db = Zend_Registry::get("db"); 

私はこのように実行します。

$sql = "DELETE FROM premium_items WHERE id = '$id'"; 
        $stmt = new Zend_Db_Statement_Pdo($this->_db, $sql); 
        return $stmt->execute(); 

$sql = "DELETE FROM premium_items WHERE id = ?"; 
       $stmt = new Zend_Db_Statement_Pdo($this->_db, $sql); 
       return $stmt->execute(array($id)); 

$this->_db->delete('premium_items', "id = '$id'"); 

各バリアントがエラーなしで動作しますが、何をしていませんそれはしなければならない。 このような状況で私は何ができますか?

Zend_Db_Adapter

答えて

1

、試してみてください。

$this->_db->delete('premium_items', 'id = ' . (int)$id); 

(ただし、整数を使用していて、キャスト場合にのみ、このいずれかを実行します。あなたが行うことができ、この特定のケースでは

$this->_db->delete('premium_items', array("id = ?" => $id)); 

または、お使いのモデル(取得Zend_Db_Table_Abstract)ではそれ)

+0

、皆は1つがちょうど常にトランザクションがコミットされたかどうかを確認する必要があり、正しかった:( –

1

:!

$row = $this->find($id)->current(); 
$row->delete(); 
解決策を見つけ

それとも

$db = $this->getAdapter(); 
$db->delete($table, $db->quoteInto("id = ?", $id)); 
+0

私は実際にはすでにこの持っている: 'パブリック関数の__construct(取得Zend_Db_Table_Abstract $ DBTABLE、$ IDを) { \t $ this - > _ dbTable = $ dbTable; \t if($ id){ \t \t $ this - > _ dbTable-> find($ id) - > current(); \t} else { \t \t $ this - > _ row = $ this - > _ dbTable-> createRow(); 次いで\t} } ' 'パブリック関数(削除) {\t戻り$この - > _行優先>()を削除します。 } ' –

+0

私はすでにこの問題を抱えていましたが、zend_db_table関数で解決策を見つけることはできませんでした。 私は最後のコードでこれを解決します – TeChn4K

関連する問題