Variables de liaison incompatibles dans l'instruction préparée MySQLi
Lorsqu'ils tentent d'implémenter un formulaire de connexion à l'aide d'une instruction préparée en PHP, certains développeurs rencontrent le problème frustrant erreur : "mysqli_stmt::bind_result() : le nombre de variables de liaison ne correspond pas au nombre de champs préparés déclaration."
Cette erreur se produit lorsque la requête SQL et la fonction bind_result() contiennent une incompatibilité dans le nombre de champs sélectionnés et attribués aux variables. Examinons comment résoudre ce problème en fonction du code fourni.
Dans le code fourni :
$stmt = $mysqli->prepare("SELECT username AND password FROM users WHERE username = ?"); $stmt->bind_param('s', $username); $stmt->execute(); $stmt->bind_result($password, $username);
Le problème réside dans la requête SQL. Le mot-clé « AND » est utilisé à la place d'une virgule lors de la sélection de plusieurs champs. La syntaxe correcte pour sélectionner plusieurs champs est de les séparer par une virgule :
$stmt = $mysqli->prepare("SELECT username, password FROM users WHERE username = ?");
De plus, la fonction bind_result() doit correspondre au nombre de champs sélectionnés. Dans ce cas, deux champs sont sélectionnés, donc la fonction bind_result() doit avoir deux variables :
$stmt->bind_result($username, $password);
En corrigeant la syntaxe de sélection et en alignant la fonction bind_result() avec le nombre de champs sélectionnés, le problème des variables de liaison incompatibles seront résolues, permettant au formulaire de connexion de fonctionner correctement.
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!