Retour requete UPDATE via pdo
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonsoir à tous,
J'ai dans mon code un simple update effectué via pdo:
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 +++
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:
- Retour requete UPDATE via pdo
- Windows update bloqué - Guide
- Winget update - Guide
- Asus live update - Télécharger - Utilitaires
- Retour à la ligne excel formule - Guide
- Wsus offline update - Télécharger - Systèmes d'exploitation
4 réponses
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
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
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 +++
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 +++
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.';
}
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.';
}