Maison >développement back-end >tutoriel php >Pourquoi `mysqli_stmt::bind_result()` génère-t-il une erreur « Incompatibilité de liaison » dans les formulaires de connexion PHP ?
Erreur Mysqli_stmt::bind_result() : incompatibilité de liaison
Lors de la tentative d'implémentation d'un formulaire de connexion PHP à l'aide d'une instruction préparée, les utilisateurs peuvent rencontrer l'erreur suivante :
mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in prepared statement
Cette erreur indique un écart entre le nombre de variables spécifié dans bind_result() et le nombre de champs renvoyés par l'instruction préparée. Pour résoudre ce problème, examinez l'extrait de code suivant :
$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();
Cause première :
La syntaxe incorrecte dans l'instruction SELECT est la cause première de l'erreur. La syntaxe correcte doit être :
SELECT username, password FROM users WHERE username = ?
Résolution :
Le problème peut être résolu en séparant les champs de l'instruction SELECT par une virgule au lieu de "AND. " Le code correct est fourni ci-dessous :
$mysqli->prepare("SELECT username, password FROM users WHERE username = ?");
En garantissant la syntaxe correcte dans l'instruction SELECT et en observant que le nombre de variables de liaison correspond au nombre de champs dans l'instruction préparée, l'erreur mysqli_stmt::bind_result() peut être évité.
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!