ホームページ > バックエンド開発 > PHPチュートリアル > PDO プリペアドステートメントで「WHERE... IN」を使用して複数の項目を削除するにはどうすればよいですか?

PDO プリペアドステートメントで「WHERE... IN」を使用して複数の項目を削除するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-10-31 22:34:02
オリジナル
666 人が閲覧しました

How to Delete Multiple Items with `WHERE... IN` in PDO Prepared Statements?

「WHERE... IN」句を使用した PDO クエリ

PDO クエリで「WHERE... IN」句を使用する場合、開発者は、リストの最初の項目のみが削除されるという問題に遭遇することがよくあります。これは、準備されたステートメント内で値 (数値) と制御フロー ロジック (カンマ) を混合することの非互換性により発生します。これを解決するには、リスト内の各値に独自のプレースホルダーが必要です。

解決策:

  1. 値を配列に分割します。例:
$idlist = array('260','201','221','216','217','169','210','212','213');
ログイン後にコピー
  1. 各値のプレースホルダーを表す疑問符の文字列をカンマで区切って構築します。例:
$questionmarks = str_repeat("?,", count($idlist)-1) . "?";
ログイン後にコピー
  1. クエリを準備する"IN" 句パラメータとして疑問符を使用します。例:
$stmt = $dbh->prepare("DELETE FROM `foo` WHERE `id` IN ($questionmarks)");
ログイン後にコピー
  1. $idlist 配列を反復処理し、各値をプレースホルダーにバインドします。例:
foreach ($idlist as $id) {
  $stmt->bindParam($i, $id);
  $i++; 
}
ログイン後にコピー

ステートメントが準備され、パラメーターがバインドされたら、クエリを実行すると、$idlist 配列で指定されたすべての項目が正常に削除されます。

以上がPDO プリペアドステートメントで「WHERE... IN」を使用して複数の項目を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート