Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/12/2010, 22h22   #1
Invité régulier
 
Inscription : décembre 2010
Messages : 21
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 21
Points : 9
Points : 9
Par défaut Problème étrange avec mysql_query

Bonsoir à tous.

J'ai un problème en PHP avec la fonction mysql_query() et je n'arrive pas à le résoudre après plusieurs heures passées dessus...

Voila ma ligne de commande :

Code :
mysql_query("UPDATE inscrits SET idrole1=NULL,idrole2=NULL,idrole3=NULL,idrole4=NULL WHERE logininscrit='".$_POST['logininscrit']."';") OR DIE ("Erreur n°".mysql_errno()." : ".mysql_error());
Sachant que j'envoie à la page le logininscrit en méthode POST à l'aide d'une liste déroulante.

Seulement... Je n'ai aucun message d'erreur et la base de donnée n'est pas mis à jour.

Je me suis bien connecté à la base de donnée auparavant.

J'ai donc fait un echo du paramètre de mysql_query, j'ai copié l'affichage sur le navigateur de la requête et je l'ai collé dans PHPMyAdmin et la requête à fonctionner.

De plus, cette même ligne de commande (Seulement $_POST['logininscrit'] est changé en $_SESSION['logininscrit']) fonctionne sur une autre de mes pages PHP...

Voila... Je ne sais plus quoi faire... Pourriez vous m'aider s'il vous plait ?

Merci beaucoup d'avance et je vous souhaite de passer une excellente soirée !
Birmania est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 22h44   #2
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 456
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 456
Points : 2 541
Points : 2 541
Envoyer un message via Skype™ à rawsrc
Bonjour,

Quand tu dis que tu n'as aucun message d'erreur : est-ce à l'exécution que tu n'en as aucun (dans la fenêtre de rendu) ou même les logs PHP/MySQL sont vides ?
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 23h01   #3
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
S'il n'y a pas d'erreur et que tu es sur qu'aucune ligne est modifiée (tu pourrais le controler avec affected_rows) c'est que ton WHERE ne cible rien.
Le jeu des encodages et des affichages peut faire que la requete que tu copies/colles n'est pas identique à celle executée.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2010, 23h19   #4
Invité régulier
 
Inscription : décembre 2010
Messages : 21
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 21
Points : 9
Points : 9
Et bien lorsque je dis qu'il n'y a aucune erreur, je parle d'affichage à l'écran, pour ce qui est des logs, je ne les ai pas initialisés et je ne m'en était, jusque là, pas servit.

Je viens d'utiliser la commande mysql_affected_rows() et voila l'affichage écran que j'obtiens : "1".

Donc la modification s'est bien effectuée...
Birmania est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 01h44   #5
Membre Expert
 
Inscription : septembre 2010
Messages : 1 234
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 234
Points : 1 554
Points : 1 554
ça fonctionne alors ?

Au passage si tu fais des essais successifs d'update avec la même valeur, fait attention avec mysql_affected_rows() car dixit le manuel :

Citation:
Lorsque vous utilisez UPDATE, MySQL ne mettra pas à jour les colonnes si la nouvelle valeur est identique à l'ancienne. Il est donc possible que mysql_affected_rows() ne représente pas forcément le nombre de lignes correspondantes mais plutôt le nombre de lignes qui ont été réellement affectées par la requête
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 14h28   #6
Invité régulier
 
Inscription : décembre 2010
Messages : 21
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 21
Points : 9
Points : 9
Non non, cela ne fonctionne pas... Merci pour ton information sur la commande mysql_affected_rows.

Voila, je suis donc encore bloqué sur ce problème. J'ai essayé de faire un update au tout début de ma page sur une seule colonne de la table "inscrits" de ma base de donnée et en utilisant aucune variable et cela réagit de la même manière... (Pas d'erreur mais la base de donnée n'est pas affectée).

Voila la ligne de commande :

Code :
mysql_query("UPDATE inscrits SET idrole1=3 WHERE logininscrit='testte';") OR DIE ("Erreur n°".mysql_errno()." : ".mysql_error());
C'est vraiment étrange je trouve...
Birmania est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 14h30   #7
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Citation:
Je viens d'utiliser la commande mysql_affected_rows() et voila l'affichage écran que j'obtiens : "1".
C'est donc qu'une ligne a bien été modifiée.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 19h56   #8
Membre Expert
 
Inscription : septembre 2010
Messages : 1 234
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 234
Points : 1 554
Points : 1 554
Citation:
Envoyé par Birmania Voir le message
Non non, cela ne fonctionne pas... Merci pour ton information sur la commande mysql_affected_rows.

Voila, je suis donc encore bloqué sur ce problème. J'ai essayé de faire un update au tout début de ma page sur une seule colonne de la table "inscrits" de ma base de donnée et en utilisant aucune variable et cela réagit de la même manière... (Pas d'erreur mais la base de donnée n'est pas affectée).

Voila la ligne de commande :

Code :
mysql_query("UPDATE inscrits SET idrole1=3 WHERE logininscrit='testte';") OR DIE ("Erreur n°".mysql_errno()." : ".mysql_error());
C'est vraiment étrange je trouve...
ça dépend. Si rien ne correspond au where, la requête est effectuée normalement mais rien ne se passe et il n'y a pas lieu de renvoyer un message d'erreur. Ce qui serait étrange dans ce cas c'est que mysql_affected_rows() renvoie 1.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 23h43   #9
Invité régulier
 
Inscription : décembre 2010
Messages : 21
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 21
Points : 9
Points : 9
Le problème est que mysql_affected_rows() renvoie bien 1... Comme si la mise à jour ne s'enregistrer que très temporairement. J'ai bien essayer de faire un COMMIT derrière mais rien n'y fait...
Birmania est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 23h58   #10
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Il faut que tu debug, reduit ton code a ta requete, reduit ta base a la ligne censé se mettre a jour etc.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h37.


 
 
 
 
Partenaires

Hébergement Web