ホームページ >バックエンド開発 >PHPチュートリアル >PDO を使用して配列を IN() 条件に効率的にバインドするにはどうすればよいですか?
SQL クエリを使用する場合、値の配列を IN() 条件に組み込む必要があるシナリオが発生する場合があります。これにより、特定の列に複数の値を効率的に指定できるようになり、値ごとに個別のクエリを作成する必要がなくなります。
従来、1 つのアプローチは、カンマ区切りのクエリを手動で作成することです。値のリストを取得してクエリに埋め込みます。例:
$ids = [1, 2, 3, 7, 8, 9]; $db = new PDO(...); $in = "'" . implode("','", $ids) . "'"; $stmt = $db->prepare("SELECT * FROM table WHERE id IN($in)"); $stmt->execute();
この方法では、各値を手動で引用してリストを作成する必要があり、面倒な場合があります。
代わりに、次のことができます。 PDO のプレースホルダー反復機能を利用して、値の配列をプレースホルダーに動的にバインドします。これには、適切な数の疑問符 (?) を含むプレースホルダー文字列を構築し、配列を反復処理してクエリを実行することが含まれます。
$inQuery = str_repeat('?,', count($ids) - 1) . '?'; $stmt = $db->prepare("SELECT * FROM table WHERE id IN($inQuery)"); $stmt->execute($ids);
名前付きプレースホルダーの場合、プロセスは一連の名前付きプレースホルダーを作成し、それらを対応する値にバインドする必要があるため、少し複雑になります。これには、外部カウンターを維持し、パラメーターの 2 つの配列をマージする必要があります。
PDO のプレースホルダー反復を使用すると、配列を IN() 条件に簡単にバインドでき、SQL クエリを簡素化し、効率を高めることができます。複数の値を扱います。
以上がPDO を使用して配列を IN() 条件に効率的にバインドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。