Auteur |
Message |
Adrien
Accro à Web-IG
Sexe:
Messages: 125
Localisation: Ile-de-France
|
Posté le:
Jeu 03 Aoû 2006 - 16:46 |
|
Cela fait quelques heures que je m'arrache les cheveux.
Posons le contexte :
J'effectue un update dans une table. Celui-ci fonctionne lorsque le critère WHERE est OK, sinon ça n'update rien, logique.
Cependant, j'ai besoin de faire un test ensuite par rapport à l'état de l'exécution de cette requête. Donc :
$variable = mysql_query(blabla);
Et là, c'est le drame !
D'après la doc, dans le cas d'une requête UPDATE, mysql_query renvoie FALSE ou TRUE.
Or dans mon cas il renvoit 1. J'imagine que c'est TRUE, sauf qu'il renvoit 1 même quand l'update ne se fait pas !!!!!!!!
Et là je suis à deux doigts de tout jeter par la fenêtre.
Messieurs les développeurs ? |
|
|
|
|
N'oubliez pas de vous inscrire à la communauté pour participer. Si vous êtes déjà membre, connectez-vous pour faire disparaître ce bandeau publicitaire. |
Genzo
Modérateur
Sexe:
Messages: 1706
Localisation: Sartrouville (78)
|
Posté le:
Jeu 03 Aoû 2006 - 18:49 |
|
Bonjour,
La requète renvoie 1 (true), et c'est tout à fait normal.
Quand tu fais un UPDATE sous PHPMyAdmin, il indique jamais si par exemple l'id du WHERE n'existe pas. Donc la requète SQL s'est effectuée correctement pour MySQL.
Si tu veux vérifier que les modifications ont été enregistrées, il faut faire un SELECT avant et après l'UPDATE, et de vérifier si les données ne correspondent plus (UPDATE aura donc bien été executée). |
_________________ N'oubliez pas de mettre un avis sur votre lycée/centre de formation !!! Pensez aux futurs BTSiens. Merci |
|
|
|
Adrien
Accro à Web-IG
Sexe:
Messages: 125
Localisation: Ile-de-France
|
Posté le:
Jeu 03 Aoû 2006 - 22:02 |
|
Je l'ai découvert au bout de quelques heures. Mieux vaut tard que jamais cela dit lol.
Bon moralité, mysql_affected chez pu quoi, permet de savoir combien de ligne ont été modifiée et de savoir si l'update a bien fonctionné ou non. |
|
|
|
|
gosu
Newbiiiie
Messages: 6
|
Posté le:
Ven 04 Aoû 2006 - 03:10 |
|
Ont peu aussi faire ceci :
$variable = mysql_query(blabla) or die(mysql_error());
Si la requete n'a pas eu lieu on arrete tou ( le die() ) et on affiche le message d'érreur avec mysql_error()
Ca évite de faire ceci :
Genzo a écrit: |
Si tu veux vérifier que les modifications ont été enregistrées, il faut faire un SELECT avant et après l'UPDATE, et de vérifier si les données ne correspondent plus (UPDATE aura donc bien été executée). |
Pourquoi faire 3 requete au lieu d'une seule ? :p |
|
|
|
|
Genzo
Modérateur
Sexe:
Messages: 1706
Localisation: Sartrouville (78)
|
Posté le:
Ven 04 Aoû 2006 - 12:03 |
|
gosu a écrit: |
Si la requete n'a pas eu lieu on arrete tou ( le die() ) et on affiche le message d'érreur avec mysql_error() |
Le problème c'est que Mysql ne renvoie aucune erreur. Je viens de tester en mettant un id bidon pour une table existante, et ça ne m'affiche pas le die
Et, en dehors de l'UPDATE, je raouterai un @ devant mysql_query, pour pas que l'user voit l'erreur sql.
Adrien a écrit: |
Je l'ai découvert au bout de quelques heures. Mieux vaut tard que jamais cela dit lol.
Bon moralité, mysql_affected chez pu quoi, permet de savoir combien de ligne ont été modifiée et de savoir si l'update a bien fonctionné ou non. |
Pour moi, mysql_affected_rows() est toujours égal à zéro, même si l'UPDATE s'est bien réalisé.
Edit : quoique, d'après la doc PHP, ça devrait fonctionner avec l'UPDATE. |
_________________ N'oubliez pas de mettre un avis sur votre lycée/centre de formation !!! Pensez aux futurs BTSiens. Merci |
|
|
|
Adrien
Accro à Web-IG
Sexe:
Messages: 125
Localisation: Ile-de-France
|
Posté le:
Ven 04 Aoû 2006 - 13:42 |
|
Non ça me semble correct. A l'usage ça fait bien ce que je souhaitais faire. |
|
|
|
|
Genzo
Modérateur
Sexe:
Messages: 1706
Localisation: Sartrouville (78)
|
Posté le:
Ven 04 Aoû 2006 - 16:25 |
|
Ok problème [résolu] alors |
_________________ N'oubliez pas de mettre un avis sur votre lycée/centre de formation !!! Pensez aux futurs BTSiens. Merci |
|
|
|
Adrien
Accro à Web-IG
Sexe:
Messages: 125
Localisation: Ile-de-France
|
Posté le:
Ven 04 Aoû 2006 - 17:22 |
|
Yes |
|
|
|
|
|