Méthode prepare pour requête MySQL - FALSE

Thibault_63 Messages postés 6 Statut Membre -  
jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je suis en train de coder la connexion à un espace utilisateur, conditionnée à l'existence d'un couple "pseudo-mot de passe" dans la base de données.

Voilà mon code (ci-dessous), qui ne fonctionne pas puisqu'un message d'erreur apparaît en me disant : Call to a member function execute() on boolean

J'ai essayé toutes les solutions possibles, mais je ne résous jamais l'erreur...
Please help !


$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

$pass_hache = sha1($_POST['motdepasse']);
$pseudo = $_POST['email'];

$req = $conn->prepare('SELECT ID FROM table_1 WHERE Email = :pseudo AND MDP = :pass_hache');
$req->execute(array('pseudo' => $pseudo,'pass_hache' => $pass_hache));
$resultat = $req->fetch();

if (!$resultat)
{
echo 'Mauvais identifiant ou mot de passe !';
}

else
{
session_start();
$_SESSION['id'] = $resultat['id'];
$_SESSION['pseudo'] = $pseudo;
?>


3 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour

    Avec mydqli tu dois utiliser les bindparam au lieu d'un array dans le exécute il me semble.
    0
  2. Utilisateur anonyme
     
    Bonjour

    Jordane a raison, mais tu as déjà une erreur avant ce problème là.
    Le message dit que tu essayes d'utiliser execute sur un booléen : c'est donc que $req est un booléen, et donc que $conn->prepare a échoué.
    Et puisque tu as testé la connexion, il n'y a que le prepare lui-même comme cause d'erreur. Fais afficher le message d'erreur après le prepare, tu auras plus de détails.
    Tu te rendras compte qu'avec mysqli, on ne peut utiliser que ? comme paramètre dans les requêtes, pas de noms de variables comme :pseudo et :pass_hache. Une autre différence avec PDO.
    0