「WHERE... IN」句を使用した PDO クエリ
PDO クエリで「WHERE... IN」句を使用する場合、開発者は、リストの最初の項目のみが削除されるという問題に遭遇することがよくあります。これは、準備されたステートメント内で値 (数値) と制御フロー ロジック (カンマ) を混合することの非互換性により発生します。これを解決するには、リスト内の各値に独自のプレースホルダーが必要です。
解決策:
$idlist = array('260','201','221','216','217','169','210','212','213');
$questionmarks = str_repeat("?,", count($idlist)-1) . "?";
$stmt = $dbh->prepare("DELETE FROM `foo` WHERE `id` IN ($questionmarks)");
foreach ($idlist as $id) { $stmt->bindParam($i, $id); $i++; }
ステートメントが準備され、パラメーターがバインドされたら、クエリを実行すると、$idlist 配列で指定されたすべての項目が正常に削除されます。
以上がPDO プリペアドステートメントで「WHERE... IN」を使用して複数の項目を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。