MySQL IN ステートメントの PDO バインディング値
この質問は、MySQL IN ステートメントで使用するために ID の配列を PDO ステートメントにバインドする方法について説明します。 。この問題は、配列内のカンマ区切りの値が個々の値ではなく単一の文字列として扱われる場合に発生します。
解決策:
推奨される解決策は、 WHERE 句の find_in_set 関数。ただし、他のオプションも利用できます。
オプション 1: Find_in_set
select users.id from users join products on products.user_id = users.id where find_in_set(cast(products.id as char), :products)
この方法は、パフォーマンスに影響を与える可能性があるため、比較的小さなデータ セットに適しています。大規模なデータベース。
オプション 2: ユーザー定義Function
カンマ区切りの値のリストを分割するユーザー定義関数を作成できます。これは、大規模なデータ セットに対するよりスケーラブルなソリューションです。このような関数の作成に関するリソースは、提供されたリンクにあります:
http://www.slickdev.com/2008/09/15/mysql-query-real-values-from-delimiter- Separated- string-ids/
最終的に、ソリューションの選択は、処理されるデータセットのサイズと複雑さによって決まります。
以上がPDO を使用して ID の配列を MySQL IN ステートメントに適切にバインドする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。