Maison > base de données > tutoriel mysql > Pourquoi PDO renvoie-t-il une seule ligne lors de la liaison de paramètres à une clause WHERE IN ?

Pourquoi PDO renvoie-t-il une seule ligne lors de la liaison de paramètres à une clause WHERE IN ?

DDD
Libérer: 2024-11-25 09:19:11
original
853 Les gens l'ont consulté

Why Does PDO Return Only One Row When Binding Parameters to a WHERE IN Clause?

Liaison des paramètres de la clause WHERE IN avec PDO

Question :

Lors de la tentative de liaison des paramètres à une clause WHERE IN à l'aide PDO, le nombre résultant est toujours un, contrairement à l'insertion manuelle de valeurs sans paramétrage. Quelle est la cause de cet écart ?

Code :

$myArray = implode($myArray, ',');
$sth = $dbh->prepare('SELECT foo FROM bar WHERE ids IN (:ids)');
$sth->bindParam(':ids', $myArray);
$sth->execute();
$result = $sth->fetch();
echo $sth->rowCount();
Copier après la connexion

Réponse :

Malheureusement, les objets de données PHP (PDO) ne prend pas directement en charge les paramètres de liaison pour les clauses IN. Le tableau $myArray est traité comme une chaîne unique, similaire à ce SQL :

SELECT foo FROM bar WHERE ids IN ('1,2,3')
Copier après la connexion

Malgré la présence de plusieurs valeurs séparées par des virgules, la base de données les interprète comme une seule valeur de chaîne.

Pour obtenir le comportement souhaité, les clauses IN doivent être insérées manuellement dans la requête comme suit :

'SELECT foo FROM bar WHERE ids IN (' . $myArray .')'
Copier après la connexion

Malheureusement, il n'y a pas d'alternative mécanisme de liaison des paramètres dans les clauses IN de PDO à ce stade.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal