Le mystère des variables de liaison incompatibles
La question tourne autour d'une erreur rencontrée lors de la liaison des paramètres pour une instruction détaillée préparée par MySQL. Le problème réside dans l'inadéquation entre le nombre d'indicateurs de type "s" dans la méthode bind_param et le nombre de points d'interrogation (?) dans la chaîne de requête.
Comprendre bind_param()
bind_param() est une méthode mysqli qui remplace les points d'interrogation (?) dans une requête préparée par des données réelles. Chaque caractère de la chaîne de définition de type (par exemple, "s" pour chaîne) correspond à un point d'interrogation et aux données à lier.
Correspondance au nombre de variables de liaison
Le point critique à retenir est que le nombre de caractères dans la chaîne de définition de type (par exemple, "s,s,s") doit correspondre précisément au nombre de points d'interrogation (?) dans la requête. chaîne. Par exemple, une requête avec 3 points d'interrogation nécessite une chaîne de définition de type avec 3 caractères "s".
Examen du code
Dans le code PHP donné, la requête La chaîne contient 65 points d'interrogation, mais la méthode bind_param() utilise "s,s,s,s,s,s,s,s" (un total de seulement 8 caractères "s"). Cette divergence entraîne le message d'erreur : "Le nombre d'éléments dans la chaîne de définition de type ne correspond pas au nombre de variables de liaison."
Pour résoudre le problème :
Pour Corrigez le problème, vérifiez que le nombre de caractères « s » dans la méthode bind_param() correspond au nombre de points d'interrogation (?) dans la chaîne de requête. Dans ce cas, la méthode bind_param() doit être remplacée par :
$stmt->bind_param("sssssssssssssssssssssssssssssssssssssssssssssssssssssssssss", ...);
Notes supplémentaires :
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!