Maison >base de données >tutoriel mysql >Pourquoi `mysqli_stmt::bind_result()` génère-t-il une erreur de non-concordance de variable de liaison ?
Incompatibilité de variable de liaison dans mysqli_stmt::bind_result() de PHP
Lorsque vous essayez de vous connecter à l'aide d'un formulaire de connexion PHP avec une instruction préparée, vous rencontrez le erreur :
mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in prepared statement
Diagnostic :
Cette erreur se produit lorsque le nombre de variables de liaison spécifiées dans bind_param() ne correspond pas au nombre de champs renvoyés par le préparé déclaration.
Solution :
Dans votre code :
$stmt->prepare("SELECT username AND password FROM users WHERE username = ?");
L'instruction préparée récupère deux champs, le nom d'utilisateur et le mot de passe, mais vos appels ultérieurs à bind_param() et bind_result() ne spécifient qu'une seule variable de liaison, $username.
Pour résoudre ceci, vous devez spécifier correctement plusieurs variables et champs de liaison :
$mysqli->prepare("SELECT username, password FROM users WHERE username = ?"); $username = $_POST['name']; $stmt->bind_param('s', $username); $stmt->execute(); $stmt->bind_result($username, $password);
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!