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 ?

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 ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-11 09:01:09204parcourir

Why Does `mysqli_stmt::bind_result()` Throw an Error When the Number of Bind Variables Doesn't Match the Result Set Columns?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn