Lorsque vous utilisez PDO pour lier un tableau de valeurs à une instruction MySQL IN, le comportement par défaut consiste à traiter la valeur liée comme une seule chaîne, englobant tous les éléments du tableau plutôt que les espaces réservés individuels souhaités.
Il existe plusieurs approches pour résoudre ce problème :
1. Construction de cordes directes :
* 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. Fonction 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. Fonction définie par l'utilisateur :
* 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.
Cette dernière approche est recommandée pour les requêtes qui reposent fréquemment sur des clauses IN, car elle fournit une solution généralisée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!