insertion sql en boucle

donatello
Invité n'ayant pas de compte PHPfrance

27 oct. 2005, 04:27

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?

Mammouth du PHP | 1885 Messages

27 oct. 2005, 04:38

Si tu as un seul champ:
for ($i=0; $i<count($tab); $i++) {

    $sql="INSERT INTO table VALUES('{$tab[$i]}')";
    mysql_query($sql);
} 
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Mammouth du PHP | 19672 Messages

27 oct. 2005, 09:06

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

27 oct. 2005, 10:30

c bo ça...merci.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

27 oct. 2005, 10:40

c'est [RESOLU] ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

27 oct. 2005, 10:58

oui, résolu.