ホームページ > バックエンド開発 > PHPチュートリアル > PDO で配列を IN() 句にバインドするにはどうすればよいですか?

PDO で配列を IN() 句にバインドするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-22 02:37:14
オリジナル
867 人が閲覧しました

How Can I Bind an Array to an IN() Clause in PDO?

PDO クエリでの IN() 条件への配列のバインド

概要

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 サイトの他の関連記事を参照してください。

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