Méthode prepare pour requête MySQL - FALSE
Thibault_63
Messages postés
6
Statut
Membre
-
jordane45 Messages postés 40050 Statut Modérateur -
jordane45 Messages postés 40050 Statut Modérateur -
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 !
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;
?>
A voir également:
- Méthode prepare pour requête MySQL - FALSE
- Mysql community server - Télécharger - Bases de données
- Initialize atkacpi device returns false - Forum Pilotes (drivers)
- Mysql error in file: /engine/classes/mysql.php at line 53 ✓ - Forum Réseaux sociaux
- Application.cutcopymode = false - Forum VB / VBA
- Votre colis est préparé au point retrait ✓ - Forum Consommation & Internet
3 réponses
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.
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.
Si jamais tu veux utiliser le prepare et le execute tels que tu les as écrit dans ton précédent code ... pourquoi ne pas passer en PDO au lieu d'utiliser mysqli ?
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs