Maison >base de données >tutoriel mysql >Comment lier correctement un tableau d'ID à une instruction MySQL IN à l'aide de PDO ?

Comment lier correctement un tableau d'ID à une instruction MySQL IN à l'aide de PDO ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-10 08:41:10340parcourir

How to Properly Bind an Array of IDs to a MySQL IN Statement Using PDO?

Valeurs de liaison PDO pour l'instruction MySQL IN

Cette question concerne la liaison d'un tableau d'ID à une instruction PDO à utiliser dans une instruction MySQL IN . Le problème survient lorsque les valeurs séparées par des virgules dans le tableau sont traitées comme une seule chaîne plutôt que comme des valeurs individuelles.

Solution :

La solution suggérée consiste à utiliser le fonction find_in_set dans la clause WHERE. Cependant, d'autres options sont disponibles.

Option 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)

Cette méthode convient aux ensembles de données relativement petits, car elle peut avoir des implications en termes de performances pour bases de données plus grandes.

Option 2 : Fonction définie par l'utilisateur

A Une fonction définie par l'utilisateur peut être créée pour diviser la liste de valeurs séparées par des virgules. Il s'agit d'une solution plus évolutive pour les grands ensembles de données. Des ressources sur la création d'une telle fonction peuvent être trouvées dans le lien fourni :

http://www.slickdev.com/2008/09/15/mysql-query-real-values-from-delimiter-separated- string-ids/

En fin de compte, le choix de la solution dépend de la taille et de la complexité de l'ensemble de données en cours de traitement.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn