Rrreur Requete Mysql Par PHP

Rrreur Requete Mysql Par PHP - PHP - Programmation

Marsh Posté le 03-10-2006 à 19:47:23    

Bonjour...
j'ai un souci assez chelou en PHP / MySQL...
 
Dans mon code je veut entrer une commande dans des table    dont voici le MLD.
 
Commande : (numcommande, date, totcom, #codeC)
Produit : (ref, nom, description, prixttc, stock, #codeR)
Contenir (#numcommande,#ref,Qté)
 
 
 

Code :
  1. $contenir='';
  2.      $commande="INSERT INTO commande(numcde,date,codec,totcom)
  3.            VALUES ('".$res['codec'].time()."','".date("Y-m-d" )."',".$res['codec'].",".$_SESSION['panier']['totcom']." );";
  4.            $i=0;
  5.      while($_SESSION['panier']['ref'][$i]!=false)
  6.      {
  7.      $contenir=$contenir."
  8.      INSERT INTO contenir(numcde,ref,qte)
  9.      VALUES (".$res['codec'].time().",".$_SESSION['panier']['ref'][$i].",".$_SESSION['panier']['qtecom'][$i]." );
  10.      ";
  11.      $i++;
  12.      }
  13.     echo "$commande <br>";
  14.     echo "$contenir <br>";
  15.     $session_sql -> execute_requete($commande);
  16.     echo "blabla";
  17.     $ech=$session_sql -> execute_requete($contenir);
  18.     var_dump($ech);


 
 
Quand je passe par mon site, il me met une erreur et il ne met pas ma table contenir a jour mais ma table commande c'est OK.
Pourtant quand je recopie la requete de ma variable $contenir et que je le copie dans mySQL il me l'execute !!!
Coment ca se fait ?
 
Merci !  

Reply

Marsh Posté le 03-10-2006 à 19:47:23   

Reply

Marsh Posté le 03-10-2006 à 20:19:02    

Bon, malgré le fait que je m'étais juré de ne plus intervenir dans un topic dont l'auteur parle d'erreur blabla sans juger utile de nous donner le message d'erreur en question, je peux déjà te dire que mysql n'aime pas les requêtes multiples (comprendre : plusieurs requêtes à exécuter dans la même instruction).
 
Ce qui a l'air d'être le cas dans ton code (à moins qu'execute_requete ne s'amuse à les séparer mais bizarrement, j'y crois pas).

Reply

Marsh Posté le 03-10-2006 à 20:35:58    

toutes mes excuses :  
 
"Erreur dans la requête INSERT INTO contenir(numcde,ref,qte) VALUES ('15051159900449','1000','2'), INSERT INTO contenir(numcde,ref,qte) VALUES ('15051159900449','2005','2'), INSERT INTO contenir(numcde,ref,qte) VALUES ('15051159900449','2010','1'), INSERT INTO contenir(numcde,ref,qte) VALUES ('15051159900449','1','2') Erreur de syntaxe près de 'INSERT INTO contenir(numcde,ref,qte) VALUES ('150511599004' à la ligne 4"

Reply

Marsh Posté le 03-10-2006 à 20:40:44    

Oui donc c'est bien ce que j'ai dit plus haut, mysql n'aime pas les requêtes multiples.

Reply

Marsh Posté le 03-10-2006 à 21:44:13    

Merci de me répondre ! Comment ca il aime pas ? ya aucun moyen ou c'est aléatoire ? car quand je vais dans la fenetre de mysql et que je colle cette requete il me l'execute sans broncher :-/

Reply

Marsh Posté le 03-10-2006 à 21:55:10    

Ben suffit d'exécuter chacune de tes requêtes dans la boucle plutôt qu'une fois la boucle terminée. Ou si tu tiens vraiment à ce qu'elles ne soient exécutées qu'une fois hors de la boucle, faut voir du côté des transactions , mais tu n'échapperas pas au principe 1 requête = 1 instruction php.
 
(tu entends quoi par fenêtre de mysql, parce que j'ai un léger doute sur le "sans broncher" depuis l'interface en ligne de commande alors qu'il envoit bouler depuis les GUI de mysql :D)
 
//edit :
Et bien en fait, mysql en ligne de commande aussi le fait sans broncher.
 
Pour en dessous : phpmyadmin n'est pas mysql, c'est juste un interface de gestion qui sépare tes insert à la suite pour en faire une suite d'exécution de insert :)


Message édité par naceroth le 03-10-2006 à 22:05:07
Reply

Marsh Posté le 03-10-2006 à 22:01:29    

la petite fenetre nommé "SQL" de phpMyAdmin... la il  me le fais sans broncher mes Insert Into a la suite...
 
Bon sinon j'ai trouvé comment faire.
 
donc pour les gens qui a qui ca peut servir :
 
Au lieu de faire  
 
$contenu='';
While(tableau)
{
$contenu=$contenu."Insert Into table (xxx) VALUES ("yyy" )";
}
 
faire :
 
$contenu='INSERT INTO table 'xxx' VALUES ';
While(tableau)
{
$contenu=$contenu."("yyy" ),";
}
 
en gros :
 
INSERT INTO tatable
(champ1, champ2)
VALUES
('', ''),
('', ''),
('', '')
 
Voili voilou ! pas si dur !
merci naceroth pour ta participation au topic ! me serait senti seul !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed