Maison >développement back-end >tutoriel php >Pourquoi `mysqli_stmt::bind_result()` échoue-t-il lorsque le nombre de variables de liaison ne correspond pas au nombre de champs sélectionnés ?

Pourquoi `mysqli_stmt::bind_result()` échoue-t-il lorsque le nombre de variables de liaison ne correspond pas au nombre de champs sélectionnés ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-21 18:14:10922parcourir

Why Does `mysqli_stmt::bind_result()` Fail When the Number of Bind Variables Doesn't Match the Number of Selected Fields?

Comprendre l'erreur dans mysqli_stmt::bind_result()

Lorsque vous travaillez avec des instructions préparées dans l'extension MySQLi de PHP, vous pouvez rencontrer l'erreur " mysqli_stmt::bind_result() : le nombre de variables de liaison ne correspond pas au nombre de champs dans l'instruction préparée." Ce problème se produit lorsque le nombre de variables attendues par votre requête ne correspond pas au nombre de variables liées au résultat.

Analyse du code fourni

Dans le code fourni , le problème venait de l'instruction SELECT utilisée pour préparer l'instruction :

$stmt = $mysqli->prepare("SELECT username AND password FROM users WHERE username = ?");

Dans cette instruction, la clause SELECT spécifiait deux champs, "nom d'utilisateur" et "mot de passe." Cependant, une seule variable de liaison a été utilisée ($username) :

$stmt->bind_param('s', $username);

Résolution du problème

Pour résoudre le problème, la clause SELECT doit être modifiée pour inclure uniquement les champs qui sont liés au résultat. Dans ce cas, seul "nom d'utilisateur" est nécessaire :

$stmt = $mysqli->prepare("SELECT username FROM users WHERE username = ?");

Avec cette modification, le nombre de champs dans la requête correspondra au nombre de variables de liaison et l'erreur sera résolue.

Notes supplémentaires

  • Lorsque vous utilisez plusieurs variables de liaison, assurez-vous qu'il y a le même nombre de variables de liaison qu'il y a de champs dans le Clause SELECT.
  • Vérifiez à nouveau que les types de données des variables de liaison correspondent aux champs correspondants.
  • Si vous rencontrez toujours l'erreur, essayez de vérifier l'instruction préparée en utilisant $stmt->error pour identifier tout problème potentiel de syntaxe ou de connexion.

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