Maison  >  Article  >  base de données  >  Comment lier correctement les paramètres d'une clause WHERE IN avec PDO ?

Comment lier correctement les paramètres d'une clause WHERE IN avec PDO ?

DDD
DDDoriginal
2024-11-17 13:38:02793parcourir

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

Paramètres de liaison pour la clause WHERE IN avec PDO

Lors de l'utilisation de PDO pour exécuter une requête avec une clause WHERE IN, la liaison des paramètres peut ne pas fonctionner comme prévu. Comme le démontre l'extrait de code fourni, la liaison d'une liste de valeurs séparées par des virgules au paramètre :ids entraîne un décompte de 1, bien qu'il y ait plusieurs valeurs dans le tableau.

Explication

Le problème réside dans la façon dont la clause IN s'attend à ce que les valeurs soient formatées. Lors de la liaison d'un tableau, PHP combine tous les éléments en une seule chaîne, qui est traitée comme un paramètre par la base de données. Cela entraîne l'exécution de la requête suivante :

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

Cependant, la clause IN nécessite que chaque valeur soit un paramètre individuel :

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

Solution

Pour résoudre ce problème, il faut insérer manuellement la liste IN dans la chaîne de requête :

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

Alternativement, on peut utiliser la méthode bindParam pour lier des valeurs individuelles plutôt qu'un tableau.

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