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();
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
Autres conseils
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!