[ PHP / MySQL ] INSERT multiple

INSERT multiple [ PHP / MySQL ] - Programmation

Marsh Posté le 08-11-2001 à 00:56:50    

Est-il possible d'insérer les données d'un tableau (X dimensions) ou de X tableaux ("uni-dimensionnel" ) dans une table ac une requete INSERT multiple
 
parcq faire une boucle pour ajouter les lignes une par une me parait long et pas très heureux.
 
j'espère q c compréhensible...
 
Merci.
 
FFX.


---------------
1km = 1024m
Reply

Marsh Posté le 08-11-2001 à 00:56:50   

Reply

Marsh Posté le 08-11-2001 à 01:30:48    

INSERT TA_TABLE (COLONNE_1, COLONNE_2,...)
  VALUES (Valeur_1,Valeur_2,...),
         (Valeur_1,Valeur_2,...),
         (Valeur_1,Valeur_2,...),
          ...
         (Valeur_1,Valeur_2,...)
 
Il te reste juste à générer les (Valeur_1,Valeur_2,...), ce qui ne doit pas être trop difficile avec un implode() sur ton tableau...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 08-11-2001 à 01:49:21    

Mara's dad a écrit a écrit :

INSERT TA_TABLE (COLONNE_1, COLONNE_2,...)
  VALUES (Valeur_1,Valeur_2,...),
         (Valeur_1,Valeur_2,...),
         (Valeur_1,Valeur_2,...),
          ...
         (Valeur_1,Valeur_2,...)
 
Il te reste juste à générer les (Valeur_1,Valeur_2,...), ce qui ne doit pas être trop difficile avec un implode() sur ton tableau...  




 
ok, le implode() je vois pas trop comment ca marche alors je v essayer un truc du genre:
 
$query= "INSERT TA_TABLE (COLONNE_1, COLONNE_2,...)
  VALUES ";
 
for($i=0;$i<$nb_ligne;$i++)
{
   if($i>0)
      $query.=",";
   $query.= "($tab1[$i], $tab2[$i], ...)";
}
 
g bon? :)


---------------
1km = 1024m
Reply

Marsh Posté le 08-11-2001 à 02:26:43    

Presque...
Faut pas oublier les () !
 
$query= "INSERT TA_TABLE (COLONNE_1, COLONNE_2,...) VALUES (";  
 
for($i=0;$i<$nb_ligne;$i++)  
{  
  if($i>0)  
    $query.=" ), (";  
  $query.= implode(",", $tab[$i]);  
}  
$query.=" )
 
...
 
Pour $tab[ligne,colonne], implode(",", $tab[$i]) retourne tous les éléments de $tab[$i] (donc les colonnes) séparés par des virgules)
Avec http://www.php.net/manual/fr/function.array-walk.php, y'a même moyen de pas avoir de boucle for ! Trop fort non ;-)
 
Puis, les noms des colonnes, elles sont peut-être dans un tableaux ? ? ?, ou on peut les lire dans la structure de la table ...

 

[edtdd]--Message édité par Mara's dad--[/edtdd]


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 09-11-2001 à 03:09:37    

précision, fo pas oublier de NE PAS mettre les parenthèses  :D  
 
la requete doit etre de la forme:
"INSERT INTO TA_TABLE (COLONNE_1, COLONNE_2,...) VALUES (ligne1), (ligne2), ..., (lignen)"
 
et non pas  
"INSERT INTO TA_TABLE (COLONNE_1, COLONNE_2,...) VALUES ((ligne1), (ligne2), ..., (lignen))"
 
voilà. :hello:

 

[edtdd]--Message édité par xmulder--[/edtdd]


---------------
1km = 1024m
Reply

Sujets relatifs:

Leave a Replay

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