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 ?
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
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!