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
Libérer: 2024-12-11 13:09:11
original
635 Les gens l'ont consulté

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();
Copier après la connexion

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 = ?");
Copier après la connexion

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);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal