Maison > base de données > tutoriel mysql > Pourquoi la liaison de tableaux à la clause IN de PDO donne-t-elle des résultats incorrects ?

Pourquoi la liaison de tableaux à la clause IN de PDO donne-t-elle des résultats incorrects ?

Barbara Streisand
Libérer: 2024-11-22 04:37:46
original
558 Les gens l'ont consulté

Why Does Binding Arrays to PDO's IN Clause Yield Incorrect Results?

Paramètres de liaison pour la clause IN à l'aide de PDO : résolution des écarts

Lors de l'utilisation de paramètres de liaison pour la clause IN à l'aide de PDO, des résultats inattendus peuvent survenir. Plus précisément, le code fourni démontre que la liaison d'un tableau à la clause IN viabindParam() entraîne un décompte inexact, alors que l'utilisation du tableau directement dans la requête produit le résultat souhaité.

Pour comprendre l'écart, il est crucial de reconnaissez que la fonction implode() de PHP concatène un tableau en une seule chaîne séparée par des virgules. Même si cela peut sembler créer une liste de valeurs pour la clause IN, la base de données la perçoit comme une valeur unique. Par conséquent, la requête résultante ressemble à :

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

Dans ce scénario, la base de données traite la chaîne entière comme une valeur unique, ce qui entraîne un décompte erroné de 1.

La solution réside dans manuellement construire la clause IN dans la requête elle-même. En utilisant l'opérateur de concaténation de chaînes ('.') de PHP, le tableau peut être inclus directement dans la requête :

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

Cette approche garantit que la base de données reconnaît chaque valeur du tableau comme une entrée distincte, ce qui conduit à un décompte précis. Il est important de noter qu'il n'existe actuellement aucune méthode alternative pour lier les paramètres de la clause IN.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal