PDO を使用して値の配列を MySQL IN ステートメントにバインドする場合、デフォルトの動作ではバインドされた値を次のように扱います。必要な個々の要素ではなく、配列内のすべての要素を含む単一の文字列
この問題に対処するには、複数のアプローチがあります:
1.直接文字列の構築:
* Construct the IN clause within the query string, directly including the values instead of binding them. This method avoids the binding issue but requires hard-coding the values in the query.
2. find_in_set 関数:
* Utilize the find_in_set function to search for values in a comma-separated string. Modify the query as follows: ``` SELECT users.id FROM users JOIN products ON products.user_id = users.id WHERE find_in_set(cast(products.id as char), :products) ``` Note that this approach may impact performance for large datasets.
3.ユーザー定義関数:
* Create a user-defined function that splits the comma-separated values. This function can be used in the IN clause to convert the string to individual values.
この最後のアプローチは、一般化されたソリューションを提供するため、IN 句に頻繁に依存するクエリに推奨されます。
以上がPDO を使用して配列値を MySQL IN ステートメントに適切にバインドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。