Maison >développement back-end >tutoriel php >Pourquoi `mysqli_stmt::bind_result()` génère-t-il une erreur « Variables de liaison incompatibles » ?

Pourquoi `mysqli_stmt::bind_result()` génère-t-il une erreur « Variables de liaison incompatibles » ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-11 13:09:11634parcourir

Why Does `mysqli_stmt::bind_result()` Throw a

mysqli_stmt::bind_result() : variables de liaison incompatibles et champs de déclaration préparés

Question :

Lorsque j'essaie d'exécuter une instruction préparée avec mysqli_stmt, je rencontre le erreur : "mysqli_stmt::bind_result() : le nombre de variables de liaison ne correspond pas au nombre de champs dans l'instruction préparée." Pourquoi est-ce que je reçois cette erreur ?

Exemple de code :

$mysqli = new mysqli("localhost", "root", "", "security");

$stmt = $mysqli->prepare("SELECT username AND password FROM users WHERE username = ?");
$username = $_POST['name'];
$stmt->bind_param('s', $username);
$stmt->execute();
$stmt->bind_result($password, $username);
$stmt->fetch();

Réponse :

L'erreur que vous rencontrez se produit lorsque le nombre de variables spécifié dans bind_result() ne correspond pas au nombre de colonnes renvoyées par la requête d'instruction préparée. Dans votre exemple, vous essayez de lier deux variables à une requête qui ne renvoie qu'une seule colonne.

Pour résoudre ce problème, la requête doit être écrite dans le format correct pour l'opération. La syntaxe appropriée pour sélectionner plusieurs champs est de les séparer par des virgules et non par AND :

$stmt = $mysqli->prepare("SELECT username, password FROM users WHERE username = ?");

Une fois la requête corrigée, la méthode bind_result() peut être utilisée pour lier correctement les variables au résultat :

$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!

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