Récupérer le résultat d'une requête SQL en PHP
Résolu/Fermé
valens1460
Messages postés
33
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
16 octobre 2015
-
Modifié par Whismeril le 9/05/2015 à 14:14
valens1460 - 12 mai 2015 à 07:35
valens1460 - 12 mai 2015 à 07:35
A voir également:
- Php afficher resultat requete sql
- Easy php - Télécharger - Divers Web & Internet
- Lexer resultat - Télécharger - Sport
- Afficher mot de passe wifi android - Guide
- Resultat foot - Télécharger - Vie quotidienne
- Afficher appdata - Guide
3 réponses
Utilisateur anonyme
Modifié par le père. le 10/05/2015 à 18:54
Modifié par le père. le 10/05/2015 à 18:54
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 ?
Utilisateur anonyme
11 mai 2015 à 07:59
11 mai 2015 à 07:59
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(); ...
10 mai 2015 à 19:21
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');
}