Maison >développement back-end >tutoriel php >Pourquoi `mysqli_stmt::bind_result()` génère-t-il une erreur lorsque le nombre de variables de liaison ne correspond pas aux colonnes de l'ensemble de résultats ?
Incompatibilité de variable de liaison dans mysqli_stmt::bind_result()
En PHP, lors de l'exécution d'une instruction préparée à l'aide de mysqli_stmt::bind_result(), le nombre de variables de liaison doit correspondre au nombre de champs dans le jeu de résultats. S'ils ne correspondent pas, 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" est renvoyée.
Pour résoudre ce problème, assurez-vous que le nombre des variables de liaison dans bind_result() s'aligne sur le nombre de colonnes renvoyées par la requête. Considérez le code PHP suivant :
$stmt = $mysqli->prepare("SELECT username, password FROM users WHERE username = ?"); $username = $_POST['name']; $stmt->bind_param('s', $username); $stmt->execute(); $stmt->bind_result($password, $username); // Incorrect number of bind variables $stmt->fetch();
Dans cet exemple, l'instruction préparée récupère deux colonnes, nom d'utilisateur et mot de passe. Cependant, une seule variable de liaison, $username, est spécifiée dans bind_result(). Pour corriger cela, ajoutez la deuxième variable de liaison pour $password :
$stmt->bind_result($username, $password); // Correct number of bind variables
La syntaxe des instructions SELECT est : SELECT field1, field2, ... fieldN FROM table_name WHERE .... Chaque champ doit être séparé par une virgule, pas une condition ET.
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!