0

条件に応じてデータベースからレコードを削除しようとしています。クエリは非常に単純ですが、それでも奇妙な結果が得られます。私がZFでやろうとしていること:

$where = array(
               $db->quoteInto('name = ?', $name),
               $db->quoteInto('surname = ?', $surname)
         );

$db->delete('users', $where);

Imのデバッグを試みている間:

DELETE FROM `users` WHERE (name = 'John') AND (surname = 'Johnson')

正しく機能しているSQLステートメントは何ですか。しかし、後で私の値が削除されているので、私は次のようなクエリを取得しています:

DELETE FROM `users` WHERE (name = ) AND (surname = )

デバッグ結果に応じて、これはZend_Db_Statementクラス(Statement.php)、_stripQuotedメソッドで発生します。

その結果、1つのレコードが削除される代わりに、最終的にテーブル全体がクリアされます。

私はドキュメンテーションを赤くし、また私の状況にかなり近い例のためにグーグルで検索しました。だから私はそれで何が悪いのかわからないのですか?

Zend Frameworkバージョン:1.12

何か案は?

4

1 に答える 1

1

削除の2番目のパラメーターは文字列である必要があります。だから私はあなたが欲しいと思います:

$where = $db->quoteInto('name = ?', $name).' AND '.$db->quoteInto('surname = ?', $surname);    
$db->delete('users', $where);
于 2013-01-29T10:57:41.200 に答える