mysqli_stmt::bind_result() Erreur : correspondance des variables de liaison avec les champs d'instruction préparés
Lors de la tentative d'utilisation d'une instruction préparée pour un mécanisme de connexion en PHP, vous pouvez rencontrer l'erreur : "mysqli_stmt::bind_result() : le nombre de variables de liaison ne correspond pas nombre de champs dans la déclaration préparée." Cela indique un écart entre le nombre de variables que vous liez dans vos résultats et le nombre de champs attendus par l'instruction préparée.
Code et analyse incorrects :
Le le code fourni illustre le problème :
$stmt = $mysqli->prepare("SELECT username AND password FROM users WHERE username = ?"); $stmt->bind_param('s', $username); $stmt->execute(); $stmt->bind_result($password, $username);
L'erreur survient car le mot clé "AND" a été utilisé de manière incorrecte dans la clause SELECT. Au lieu de séparer les champs par « AND », vous devez utiliser une virgule.
Code correct et explication :
Pour résoudre cette erreur, modifiez la clause SELECT comme suit :
$stmt = $mysqli->prepare("SELECT username, password FROM users WHERE username = ?");
Avec cette modification, la déclaration préparée s'attend désormais à ce que deux champs soient renvoyés : le nom d'utilisateur et le mot de passe. Vous pouvez ensuite leur lier en toute sécurité deux variables à l'aide de mysqli_stmt::bind_result().
$stmt->bind_result($username, $password);
En vous assurant que le nombre de variables de liaison correspond au nombre de champs dans l'instruction préparée, vous pouvez empêcher le "Nombre des variables de liaison ne correspondent pas au nombre de champs dans l'erreur de l'instruction préparée.
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!