Maison > base de données > tutoriel mysql > Pourquoi `mysqli_stmt::bind_result()` génère-t-il une erreur « Nombre de variables de liaison incompatibles » en PHP ?

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

Susan Sarandon
Libérer: 2024-12-11 03:56:21
original
246 Les gens l'ont consulté

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

mysqli_stmt::bind_result() : nombre de variables de liaison incompatibles

Lors de la tentative d'implémentation d'un formulaire de connexion PHP à l'aide d'une instruction préparée, les utilisateurs nous rencontrons généralement 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." Cette erreur signifie un écart entre le nombre de variables de liaison utilisées pour stocker les résultats de la requête et le nombre réel de champs renvoyés par l'instruction SQL sous-jacente.

Code de diagnostic

$stmt = $mysqli->prepare("SELECT username, password FROM users WHERE username = ?");
$username = $_POST['name'];
$stmt->bind_param('s', $username);
$stmt->execute();
$stmt->bind_result($username, $password); // Incorrect field binding
$stmt->fetch();
Copier après la connexion

Correction

Le code ci-dessus contient une erreur dans ses liaisons de champs. La méthode bind_result() doit refléter les champs réels renvoyés par l'instruction SELECT. Dans ce scénario, la requête renvoie deux champs : nom d'utilisateur et mot de passe. Par conséquent, le code correct est :

$stmt->bind_result($username, $password); // Corrected field binding
Copier après la connexion

Autres conseils

  • Assurez-vous que l'instruction SQL est correcte. Il doit utiliser une syntaxe appropriée et le nombre correct de points d'interrogation (?) pour représenter les variables de liaison.
  • Les types de données des variables de liaison et des champs de résultat doivent correspondre. Dans ce cas, $username et $password doivent être des chaînes.
  • Utilisez toujours des instructions préparées pour éviter les vulnérabilités d'injection SQL.

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