2 votes

Insertion de plusieurs lignes dans une base de données avec mysql

Nom de ma table: single

id    custmr_id    nom      crédit     débit      solde
--+-------------+---------+----------+-----------+---------
1      56          ramen      4        0            12(ancien solde - débit)
2      23          lumen      24       0            35(ancien solde - débit)
3
4
.
.

Ma requête est la suivante:

INSERT INTO `single` (`custmr_id`, `name`, `credit`, `debit`, `balance`) VALUES 
                 ('$custmr_id', '$name', '$credit', '$debit', '$balance')

Question

Je veux ajouter plusieurs données via un formulaire php. Avec la requête ci-dessus, je suis capable d'ajouter une seule ligne. Mais pour ajouter des lignes encore et encore, comment dois-je procéder? Comment utiliser la requête mysql foreach?

1voto

Rits Points 748

Vous pouvez créer un tableau de valeurs multiples juste comme cela,

$custmr_id = $_POST['custmr_id'];
$size = count($custmr_id);
for($i = 0 ; $i < $size ; $i++){
$items[] = array(
    "custmr_id"     => $custmr_id[$i], 
);
}
$values = array();
foreach($items as $item){
    $values[] = "('{$item['custmr_id']}')";
}
$values = implode(", ", $values);

$sql = "INSERT INTO `single` (custmr_id) VALUES  {$values}    ;
" ;
$result = mysql_query($sql);

0voto

Ketan Solanki Points 646

Étape I) Créez un tableau comme ceci :

$insertArray = array(
                [0] => array(
                    ['custmr_id'] => "1",
                    ['name'] => "Lorem Ipsum",
                    ['credit'] => "10",
                    ['debit'] => "0",
                    ['balance'] => $balance,//Ici le calcul sera effectué et stocké dans la variable "$balance".
                ),
                [1] => array(
                    ['custmr_id'] => "2",
                    ['name'] => "Lorem Ipsum",
                    ['credit'] => "20",
                    ['debit'] => "0",
                    ['balance'] => $balance,//Ici le calcul sera effectué et stocké dans la variable "$balance".
                )
)

Étape II) Utilisez une boucle Foreach comme ceci :

foreach($insertArray as $key => $value){
        INSERT INTO `single` (`custmr_id`, `name`, `credit`, `debit`, `balance`) VALUES ('$value["custmr_id"]', '$value["name"]', '$value["credit"]', '$value["debit"]', '$value["balance"]');
    }

Une autre approche

$sql = array(); 
foreach( $insertArray as $row ) {
    $sql[] = '("'.mysql_real_escape_string($row['custmr_id']).'", '.$row['name'].', '.$row['credit'].', '.$row['debit'].', '.$row['balance'].')';
}
mysql_query('INSERT INTO single (`custmr_id`, `name`, `credit`, `debit`, `balance`) VALUES '.implode(',', $sql));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X