ホームページ  >  記事  >  データベース  >  PDO で WHERE IN 句のパラメータを適切にバインドする方法

PDO で WHERE IN 句のパラメータを適切にバインドする方法

DDD
DDDオリジナル
2024-11-17 13:38:02793ブラウズ

How to Properly Bind Parameters for a WHERE IN Clause with PDO?

PDO を使用した WHERE IN 句のパラメータのバインド

PDO を使用して WHERE IN 句を含むクエリを実行する場合、パラメータのバインドが機能しない場合がある予想通り。提供されたコード スニペットに示されているように、値のコンマ区切りリストを :ids パラメーターにバインドすると、配列内に複数の値があるにもかかわらず、カウントは 1 になります。

説明

問題は、IN 句が値のフォーマットをどのように想定しているかにあります。配列をバインドするとき、PHP はすべての要素を単一の文字列に結合します。これはデータベースによって 1 つのパラメーターとして扱われます。これにより、次のクエリが実行されます:

SELECT foo FROM bar WHERE ids IN ('1,2,3')

ただし、IN 句では、各値が個別のパラメータである必要があります:

SELECT foo FROM bar WHERE ids IN (1, 2, 3)

Solution

これを解決するには、クエリ文字列に IN リストを手動で挿入する必要があります。

'SELECT foo FROM bar WHERE ids IN (' . $myArray .')'

あるいは、bindParam メソッドを使用して、配列ではなく個々の値をバインドすることもできます。

以上がPDO で WHERE IN 句のパラメータを適切にバインドする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。