Page 1 sur 1

insertion sql en boucle

Posté : 27 oct. 2005, 04:27
par donatello
Bonjour,
j'essaye d'insérer les données d'un tableau $tab dans mysql avec une boucle.
Ma table contient deux champs:
1-id (auto increment)
2-nom
j'ai fait ceci mais ça ne marche pas:
for ($i=0; $i<count($tab); $i++) {

$sql="INSERT INTO table ('$tab[$i]')";
$result= mysql_query($sql)
}
ou est mon erreur?

Posté : 27 oct. 2005, 04:38
par Xenon_54
Si tu as un seul champ:
for ($i=0; $i<count($tab); $i++) {

    $sql="INSERT INTO table VALUES('{$tab[$i]}')";
    mysql_query($sql);
} 

Posté : 27 oct. 2005, 09:06
par Cyrano
Tu pourrais surtout préparer d'abord la requête avec la boucle, une requête unique et ensuite suelement l'exécuter au lieu de faire autnt d'inserion qu'il y a de données, schéma:
<?php
$nb = count($tab);
$sql = "INSERT INTO table VALUES";
for ($i = 0; $i < $nb; $i++) {

    $sql = ($i < ($nb - 1)) ? "('', '". $tab[$i] ."'), " : "('', '". $tab[$i] ."')";
}
mysql_query($sql);
?>
Explications:
-1- d'abord on initialise le début de la requête;
-2- À chaque tour de boucle, on ajoute la paire de valeur (Tu as précisé DEUX champ, or comme tu ne précises pas ces champs avec la table dans lle début de la requête, il faut des valeurs vides là où la valeur sera automatiquement inscrite pas la base elle-même;
-3- Tant qu'on est pas à la dernière valeur, on ajoute une virgule à la fin des valeurs;
-4- on sort de la boucle et seulement à ce moment on exécute l'insertion en UNE SEULE FOIS.

Posté : 27 oct. 2005, 10:30
par Invité
c bo ça...merci.

Posté : 27 oct. 2005, 10:40
par zeus
c'est [RESOLU] ?

Posté : 27 oct. 2005, 10:58
par Invité
oui, résolu.