mysqli_stmt::bind_result(): Nombre de lier les variables ne correspond au nombre de champs dans la requête préparée
Je suis en train d'essayer de coder un formulaire de connexion en PHP à l'aide d'une requête préparée, mais à chaque fois j'essaie de me connecter j'obtiens l'erreur suivante:
mysqli_stmt::bind_result(): Nombre de lier les variables ne correspond au nombre de champs dans la requête préparée
Voici mon code:
<?php
session_start();
$mysqli = new mysqli("localhost", "root" , "" , "security");
if(mysqli_connect_errno()){
echo "Wrong" ;
}
if($stmt = $mysqli->prepare("SELECT username AND password FROM users WHERE username =? AND password =?")){
$username = $_POST['name'];
$password = $_POST['password'];
$stmt->bind_param('ss' ,$username ,$password);
$stmt->execute();
$stmt->bind_result($password ,$username);
if($stmt->fetch() == 'true')
{
echo "welcome";
} else{
echo "wrong password";
}
}
?>
Quelqu'un peut me dire pourquoi ce qui se passe?
Vous êtes de liaison 3 params et dans votre requête, il y a seulement deux.
Habituellement, cela se passe, quand vous avez requête SELECT * et vous pouvez ajouter ou supprimer un champ dans la table. à l'aide de l'instruction alter table.
Habituellement, cela se passe, quand vous avez requête SELECT * et vous pouvez ajouter ou supprimer un champ dans la table. à l'aide de l'instruction alter table.
OriginalL'auteur user3114510 | 2013-12-18
Vous devez vous connecter pour publier un commentaire.
Si c'est vraiment votre code, il se peut que $_POST["nom"] ou $_POST["password"] est un tableau, de sorte que bind_param lie plus qu'une seule valeur.
Vérifier:
OriginalL'auteur tuxmania
Votre sélectionnez la syntaxe est mauvaise, la syntaxe correcte est
SELECT field1, field2, field3 FROM TABLE WHERE field1 = ? AND field2 = ?
Pour sélectionner plusieurs champs de simplement les séparer par une virgule et pas un
AND
Aussi, je me rends compte que vous êtes en train d'enregistrer vos mots de passe en clair dans le texte qui est une mauvaise pratique, envisager de hachage utilisant les nombreuses fonctions de hachage comme
sha1()
OriginalL'auteur Ali