PHP の PDO (PHP Data Objects) は、プレースホルダーをバインドするメカニズムを提供します配列内の値に対するクエリで。ただし、値の配列を IN() 条件にバインドすることはネイティブにはサポートされていません。
回避策として、反復処理して手動でプレースホルダー文字列を構築できます。配列とプレースホルダーをカンマで連結します。
$ids = [1, 2, 3, 7, 8, 9]; $in = str_repeat('?,', count($ids) - 1) . '?';
$in 変数には次のような文字列が含まれます。 "?,?,?,?,?,?".
プレースホルダー文字列を使用してクエリを準備します。
$stmt = $db->prepare("SELECT * FROM table WHERE id IN($in)");
クエリを実行します。クエリを実行し、配列を引数として渡します:
$stmt->execute($ids);
:id0、:id1、:id2 などの名前付きプレースホルダーの場合は、一連のプレースホルダーを手動で作成し、値を連想配列に収集する必要があります。
$i = 0; $in_params = []; foreach ($ids as $item) { $key = ":id" . $i++; $in_params[$key] = $item; $in .= ($in ? ',' : '') . $key; }
PDO では配列を IN() 条件にバインドすることは明示的に許可されていませんが、複製することはできます。この機能は、プレースホルダー文字列を手動で構築するか、連想配列で名前付きプレースホルダーを使用することで実現します。これらのアプローチは、PDO クエリ内の IN() 条件で配列を処理する便利な方法を提供します。
以上がPDO で配列を IN() 句にバインドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。