Récupérer le résultat d'une requête SQL en PHP
Résolu
valens1460
Messages postés
33
Date d'inscription
Statut
Membre
Dernière intervention
-
valens1460 -
valens1460 -
Bonjour alors voilà mon soucis je fais un site et j'aimerais que des personnes s'y connecte, mais pour voir si l'identifiant est dans la base, il faut que je récupère le résultat de la requête, mais mon soucis est à ce niveau je pense
j'ai ceci: "la connexion"
"la recherche""enfin je pense que le bug est la"
et une belle page blanche s'affiche :/ donc voilà je demande votre aide
EDIT: Ajout de la coloration syntaxique.
j'ai ceci: "la connexion"
$bdd = new PDO('mysql:host="";dbname="","", 'berderochet69');
"la recherche""enfin je pense que le bug est la"
$req = $bdd -> query("SELECT COUNT (*) FROM membre WHERE login ='" . $_POST["login"] . "' and pass_md5='" . $_POST["pass"] . "'"); $req->execute( array('pseudo'=>$pseudo) ); $donnees = $req->fetch(); et a la fin j'ai ma condition: if ($donnees == 0) { header('Location: membre.php'); }else { header('Location: index.php'); }
et une belle page blanche s'affiche :/ donc voilà je demande votre aide
EDIT: Ajout de la coloration syntaxique.
A voir également:
- Php afficher resultat requete sql
- Resultat foot - Télécharger - Vie quotidienne
- Afficher appdata - Guide
- Easy php - Télécharger - Divers Web & Internet
- Lexer resultat - Télécharger - Sport
- Afficher taille dossier windows - Guide
3 réponses
Bonjour
Je vois deux erreurs.
Une dans la requête : il ne faut pas d'espace entre COUNT et (*). La parenthèse qui suit un nom de fonction mysql doit être collée au nom de la fonction.
L'autre erreur dans l'exploitation du résultat.
$donnees ne contient pas une simple valeur (COUNT(*)) mais un tableau avec un élément (en fait deux , regarde la doc de fetch). Le nombre que tu cherches n'est donc pas $donnees, mais $donnees[0].
[edit] autre erreur : tu fais un execute comme si tu avais une requête préparée, alors que tu as fait un query, ce n'est pas coherent. C'est le login qui semble servir à l'identification, le pseudo joue-t-il un rôle lui aussi dans cette identification ?
Je vois deux erreurs.
Une dans la requête : il ne faut pas d'espace entre COUNT et (*). La parenthèse qui suit un nom de fonction mysql doit être collée au nom de la fonction.
L'autre erreur dans l'exploitation du résultat.
$donnees ne contient pas une simple valeur (COUNT(*)) mais un tableau avec un élément (en fait deux , regarde la doc de fetch). Le nombre que tu cherches n'est donc pas $donnees, mais $donnees[0].
[edit] autre erreur : tu fais un execute comme si tu avais une requête préparée, alors que tu as fait un query, ce n'est pas coherent. C'est le login qui semble servir à l'identification, le pseudo joue-t-il un rôle lui aussi dans cette identification ?
As-tu essayé ? La requête devrait marcher si ton $_POST["login"] et ton $_POST["pass"] sont corrects.
Attention cependant. D'après le nom de ton champ pass_md5, tu enregistres dans ta base les signatures MD5 des mots de passe, et non pas les mots de passe en clair. Alors si $_POST["pass"] est directement le champ de ton formulaire, ça ne va pas marcher, il faut mettre md5($_POST["pass"]).
D'autre part, ce serait mieux avec des requêtes préparées car avec ce que tu as écrit, ça va planter si quelqu'un met une apostrophe dans son login:
Attention cependant. D'après le nom de ton champ pass_md5, tu enregistres dans ta base les signatures MD5 des mots de passe, et non pas les mots de passe en clair. Alors si $_POST["pass"] est directement le champ de ton formulaire, ça ne va pas marcher, il faut mettre md5($_POST["pass"]).
D'autre part, ce serait mieux avec des requêtes préparées car avec ce que tu as écrit, ça va planter si quelqu'un met une apostrophe dans son login:
$req = $bdd -> prepare("SELECT COUNT(*) FROM membre WHERE login =? and pass_md5= MD5(?)"); $req -> execute (array ( $_POST["login"],$_POST["pass"])); $donnees = $req->fetch(); ...
comme ceci alors?
$req = $bdd -> query("SELECT COUNT(*) FROM membre WHERE login ='" . $_POST["login"] . "' and pass_md5='" . $_POST["pass"] . "'");
$donnees = $req->fetch();
if ($donnees[0] == 0)
{
header('Location: membre.php');
}else
{
header('Location: index.php');
}