Problème requête PDO - PHP - Programmation
Marsh Posté le 18-08-2010 à 14:27:37
"Elle ne fonctionne pas", c'est pas vraiment très explicite pour t'aider.
Qu'est ce qu'il se passe ? Une erreur fatale PHP ? Une exception ? Qu'est-ce qui s'affiche ? Est-tu sûr que ta base de données a été correctement créée, ainsi que les différentes tables ? As-tu des données dans cette tables ?
Marsh Posté le 18-08-2010 à 14:48:42
Salut, en fait cette requête ne trouve pas d'email correspondant dans la table alors qu'il en existe bien une et ne m'affiche donc aucune erreur alors qu'elle devrait en afficher une.
Alors j'ai remplacer cet requête par :
$req = $bdd->prepare('SELECT id FROM membre WHERE email=:email');
$req->execute(array('email'=>$email));
$data = $req->fetch();
if($data['id']!=NULL)
{
$valid = false;
$erreur = 'Cette adresse e-mail est déjà utilisée';
}
et là comme par magie ça fonctionne. Bizarre!
Marsh Posté le 20-08-2010 à 00:01:48
active la gestion des erreurs
http://php.net/manual/fr/pdo.error-handling.php
Marsh Posté le 23-08-2010 à 02:44:06
c'est pas de la magie, c'est que c'est comme ca que ca marche.
http://www.php.net/manual/fr/pdostatement.rowcount.php
rowCount() ne garanti pas le resultat apres un select et privilegie un COUNT() et un fetchColumn()
Marsh Posté le 23-08-2010 à 10:02:14
C'est vrai, j'avais pas lu la notice - C'est bête que ça marche pas partout, je la trouvai simple et pratique cette fonction.
Enfin bon, merci !
Marsh Posté le 18-08-2010 à 13:57:34
Bonjour,
J'ai 1 requête qui fonctionnent en local mais pas en ligne. C' est une requête qui cherche une adresse e-mail dans la table :
$req = $bdd->prepare('SELECT id FROM membre WHERE email=:email');
$req->execute(array('email'=>$email));
if($req->rowCount()>0)
{
$valid = false;
$erreur = 'Cette adresse e-mail est déjà utilisée';
}
les autres requêtes fonctionnent, mais celle-ci ne fonctionne pas. Est-ce qu'il peut y avoir quelque chose dans la structure de la table en ligne qui puisse empêcher de faire une reqûete de comparaison comme celle-là ?
Merci de votre aide.