Retour requete UPDATE via pdo

Résolu/Fermé
Utilisateur anonyme - Modifié par Spangenhelm le 10/02/2011 à 20:39
 Utilisateur anonyme - 11 févr. 2011 à 18:43
Bonsoir à tous,

J'ai dans mon code un simple update effectué via pdo:

 'UPDATE matable SET member_hash = ? WHERE member_login = ? AND member_pass = ?' 
Sachant que la requete peut ne pas aboutir pour plusieurs raisons (login ou mdp introuvable, hash introuvable ou nouveau hash identique a l'ancien), je souhaiterais savoir si il y a moyen de connaitre la clause qui n'a pas pu etre respectée dans la requete, le seul retour possible que j'ai pu trouvé est un rowCount et celui-ci indique seulement le nombre de ligne mise a jour, ce qui n'est pas tres parlant...
La requete se deroulant bien meme si aucune ligne n'est modifiee, aucun code ou message d'erreur n'est retourné.

D'avance merci a vous

+++ Spangenhelm +++
A voir également:

4 réponses

.Zoro. Messages postés 263 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 8 mai 2020 33
10 févr. 2011 à 19:26
normalement

si tu fait un update
c'est que tu connais deja ton membre

dont pour ce qui est du login ou mot de passe
fait une requete select et compare les resultats

pareil pour savoir si le hash est pareil
0
Utilisateur anonyme
10 févr. 2011 à 20:17
Ok prenons un autre exemple:

Dans une requete INSERT, un champ login et un champ email ont tous les deux une contrainte d'unicité (via sgbd) et l'un ou l'autre peuvent planter la requete (login ou/et email deja utiliser )
La requete renvoie donc un code erreur pour les doublons, ici 23000 avec mysql mais rien ne dit de quel champ il s'agit voila mon probleme, donc impossible de dire a l'utilisateur: "pseudo deja pris" ou "email deja pris" puisque l'on ne sait pas lequel a renvoyé l'erreur ! Je souhaitais pouvoir etre plus precis qu'une simple phrase: "la requete a foirée" lol

Merci pour les reponses.

+++ Spangenhelm +++
0
.Zoro. Messages postés 263 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 8 mai 2020 33
10 févr. 2011 à 21:01
pour ton exemple d'insert
voici ce que je ferais

ton utilisateur entre son login et son mail

avec ceci
on fait une requete contenant 2 sous-requetes
exemple :

$login = dupont;
$mdp = password;

$sql='
SELECT
(SELECT COUNT(login) FROM user WHERE login=?) AS nbLog
(SELECT COUNT(pass) FROM user WHERE pass=?) AS nbPass
FROM user';

$requete = $pdo -> prepare ($sql);
$requete->execute(array($login,$mdp));
$data = $requete -> fetch();
$i=0;

if($data[nbLog'] != 0)
{
echo 'desolé, ce pseudo est deja pris !';
$i++;
}

if($data['nbPass'] != 0)
{
echo 'desolé, ce mot de passe est deja pris !';
$i++;
}

if($i==0)
{
echo 'vos identifiants sont uniques.';
}
0
Utilisateur anonyme
11 févr. 2011 à 18:43
Merci Zoro, je pensais vraiment qu'il y avait plus simple snif...

A bientot sur CCM

+++ Spangenhelm +++
0