Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
936 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP/MYSQL]Commands out of Sync

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP/MYSQL]Commands out of Sync

n°2106589
nisalon_ca​je
Posté le 16-10-2011 à 13:49:45  profilanswer
 

Bonjour,
 
J'ai le code php suivant (que j'ai simplifié pour vous exposer le problème)

Code :
  1. $sql = "UPDATE toto SET monchamp=1; UPDATE toto SET monchamp=2;";
  2. $gosql = mysqli_multi_query($connexion, $sql) or die('erreur de requete ' . $sql . ' - ' . mysqli_error($connexion));
  3. // Du code php dont va dépendre la seconde requête
  4. $alpha=1;
  5. $beta = 7;
  6. $sql = "UPDATE tata SET monchamp=$alpha; UPDATE tata SET monchamp=$beta;";
  7. $gosql = mysqli_multi_query($connexion, $sql) or die('erreur de requete ' . $sql . ' - ' . mysqli_error($connexion));


 
 
Le problème est que quand je fais ça, j'obtiens : erreur de requete UPDATE toto SET monchamp=1; UPDATE toto SET monchamp=7; - Commands out of sync; you can't run this command now
 
J'ai cru comprendre qu'il fallait utiliser mysqli_free_result, mais comme ici mon $gosql est un booléen, j'ai un warning et ca ne marche tout de même pas.
 
Comment résoudre le problème ?
 
Merci d'avance

mood
Publicité
Posté le 16-10-2011 à 13:49:45  profilanswer
 

n°2106621
CyberDenix
Posté le 16-10-2011 à 17:24:18  profilanswer
 

J'ignore la raison de ton problème, mais je remarque deux choses :
- Tu n'as pas de condition WHERE dans ton update.
- Plutôt que de faire deux updates, tu devrais faire un update multiple
 
Les updates multiples sont de la forme :

Code :
  1. INSERT INTO `myTable` (`id`, `myField1`, `myField2`)
  2.            VALUES    (1,    'aa',        'aaa'),
  3.                      (2,    'bb',        'bbb'),
  4.                      (3,    'cc',        'ccc')
  5.            ON DUPLICATE KEY UPDATE `myField1`=VALUES(`myField1`),
  6.                                    `myField2`=VALUES(`myField2`)


 
http://dev.mysql.com/doc/refman/5. [...] icate.html
 
Du coup tu fais une seule requête au lieu de deux !


Message édité par CyberDenix le 16-10-2011 à 17:31:00

---------------
Directeur Technique (CTO)
n°2106623
nisalon_ca​je
Posté le 16-10-2011 à 17:48:44  profilanswer
 

Salut

 

Merci pour ta requête, mais bon j'avais simplifié l'exemple à mort. Je ne peux pas faire un seul update (rajoutons des conditions si tu veux).
Là tu évites le problèmes en regroupant tout en une requête, mais dans le cas "réel" ce n'est pas possible. :)

 

Donc en gros, l'idée est de ne aps toucher aux requêtes, mais de permettre que ca se fasse ;) (parce que j'ai mis les requêtes les plus simples possibles pour reproduire le problème)


Message édité par nisalon_caje le 16-10-2011 à 18:07:53

---------------
http://nisalon.labrute.com/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP/MYSQL]Commands out of Sync

 

Sujets relatifs
Problème avec formulaire en PHP[PHP/MYSQL] comment connaitre la valeur d'un id autoincrement
[PHP/MYSQL]Requêtes multiples[PHP] Ouvrir un fichier sur un serveur distant
Problème Tomcat / MYSQL / RMIrecherche champ minimum enregistrement mysql
Problème Session PHPmysql IN()
Plus de sujets relatifs à : [PHP/MYSQL]Commands out of Sync


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR