Vérifier si un id existe avant un DELETE? - PHP - Programmation
Marsh Posté le 21-07-2003 à 15:39:10
Maxime a écrit : Salut all, |
mysql_info, mysql_affected_rows en fonctions php ca devrait t'aider ....
Et ca m'etonnerait que mysql te retourne un code positif si aucune ligne n'a ete touchée, donc mysql_errno devrait te servir. Enfin, dans la norme sql, si peu respectée par mysql, y'a un code d'erreur (plutot de retour disons) suite à une requête, quelque soit le résultat, avec un code spécifique pour aucune ligne touchée
Marsh Posté le 21-07-2003 à 15:49:00
donc en gros je fait
Code :
|
?
sinon cest quoi la difference entre mysql_affected_rows() et mysql_num_rows() ?
Marsh Posté le 21-07-2003 à 15:54:53
Maxime a écrit : donc en gros je fait
|
Le premier donne le nombre de lignes modifié par la requête (insert, update) tandis que le second donne le nombre de valeurs retournées par la requête (select).
Marsh Posté le 21-07-2003 à 15:56:39
Maxime a écrit : donc en gros je fait
|
la doc sur php.net pour t'aider. Bon en gros et c le principal num_rows ca marche qu'avec select, affected_rows c pour insert, update, delete. Sachant que si y'a pas de clause where, affected_rows te renvoie zero. C'est pour cela que je t'ai parlé de code de retour suite à un ordre sql. A ce nivo la, la doc mysql devrait etre parlante (ca fe un moment que j'ai plonge la dedans dc jpeux pas plus t'aider pour le code si aucune ligne affectée, mais il me semble que c 100). Pour ton code, faut tester avec des petits echos si ca marche. A priori, je dirais que ca passe.
Marsh Posté le 21-07-2003 à 16:01:41
donc dans la théorie, avec ce que j'ai écrit, si l'id nest pas bon ( donc rien na été affecter ), ca me revoie 0
sinon je testerais avec un
$erreur = mysql_errno();
echo $erreur;
Merci pour votre aide
PS : je peut pas tester ici, pour ca je dit pas si ca marche ou pas
Marsh Posté le 21-07-2003 à 16:02:14
omega2 a écrit : Le premier donne le nombre de lignes modifié par la requête (insert, update) tandis que le second donne le nombre de valeurs retournées par la requête (select). |
attention, num_rows retourne aussi un nombre de lignes. Tout dépend si tu considères une "valeur" comme étant un champ d'une table de ta bd ou une ligne ...
Marsh Posté le 21-07-2003 à 16:03:19
Maxime a écrit : donc dans la théorie, avec ce que j'ai écrit, si l'id nest pas bon ( donc rien na été affecter ), ca me revoie 0 |
Ah mais de rien. C kler, essayes ta requete sur une valeur dont tu sais qu'aucune ligne sera affectee et tu auras le code d'erreur.
Marsh Posté le 21-07-2003 à 16:07:17
Je doit format, pour ca je peut pas tester
Bon allé a dans 1-2 jours pour le rapport
Merci encore
Marsh Posté le 23-07-2003 à 23:15:34
bon ca ne fonctionne pas
j'ai fait :
Code :
|
$erreur reste à 0 et $res et $rff dont vide (que l'id soit valid ou inéxistant)
Marsh Posté le 23-07-2003 à 23:29:20
Maxime a écrit : bon ca ne fonctionne pas
|
Heu, comment tu sais que c'est $erreur qu'est a zéro?
Ca pourait très bien être n'importe laquelle des trois variables vu que les deux autres seraient vide.
Met un retour a la ligne a la fin de chaque echo comme ça, tu sauras vraiment d'où viens le 0.
Marsh Posté le 23-07-2003 à 23:33:05
Si id est un entier, ne le met pas entre ' '
Sinon, c'est normal que tu n'ais pas d'erreur puisque ta requête est bonne. Il y a une différence entre une requête incorrecte et une requête correcte qui ne fait rien
Marsh Posté le 23-07-2003 à 23:37:02
omega2 a écrit : Heu, comment tu sais que c'est $erreur qu'est a zéro? |
je vien de faire
Code :
|
Et je puis donc confirmer que c'est bien erreur qui reste à 0
Marsh Posté le 23-07-2003 à 23:37:28
mrBebert a écrit : Si id est un entier, ne le met pas entre ' ' |
c'est les '' qui font que ca foire?
Marsh Posté le 23-07-2003 à 23:40:51
Au faite, ceci fonctionne nikel :
Code :
|
Marsh Posté le 23-07-2003 à 23:44:21
Maxime a écrit : c'est les '' qui font que ca foire? |
Je sais pas mais dans le doute ...
En tout cas, sans les quotes, ca marche c'est sur
(et au moins, ca te fait une erreur si ta variable $id n'est pas initialisée)
Marsh Posté le 23-07-2003 à 23:49:22
mrBebert a écrit : Je sais pas mais dans le doute ... |
Je confirme que ca ne change rien
Marsh Posté le 25-07-2003 à 19:07:23
Reply
Marsh Posté le 21-07-2003 à 15:31:54
Salut all,
bah voilà, j'aurais voulu savoir comment vérifier si un id existe avant de faire un requête SQL :
Exemple :
$sql = DELETE FROM $tbl WHERE id='$id'
et quand l'id n'existe pas, bah il s'en fou, il me retourne "supprimer avec succes" (alors que quedal à été suprimer).
Voilà , et merci d'avance.
Message édité par Maxime le 24-07-2003 à 00:51:13