sql >> Database teknologi >  >> RDS >> Mysql

indsæt flere felter ved hjælp af hver sløjfe

Du laver en foreach på $_POST snarere end på navn/alder-arrays. Du bør gøre foreach på navn eller aldersgruppe som denne:

if (
   !empty($_POST['name']) && !empty($_POST['age']) &&
   is_array($_POST['name']) && is_array($_POST['age']) &&
   count($_POST['name']) === count($_POST['age'])
) {
    $name_array = $_POST['name'];
    $age_array = $_POST['age'];
    for ($i = 0; $i < count($name_array); $i++) {

        $name = mysql_real_escape_string($name_array[$i]);
        $age = mysql_real_escape_string($age_array[$i]);

        mysql_query("INSERT INTO users (name, age) VALUES ('$name', '$age')");
    } 
}

Jeg vil også bemærke, at du i øjeblikket er modtagelig for SQL-injektion, så jeg tilføjede trinnet med at undslippe dine strenge for navn/alder.

Jeg vil også stærkt foreslå blot at lave en enkelt masseindsættelse i DB i stedet for en indsættelse af hver post individuelt (det vil jeg lade være op til dig at implementere). Denne tilgang er næsten altid at foretrække ud fra et præstationssynspunkt.

Endelig burde du VIRKELIG ikke bruge mysql_* fungerer som de er forældede. Overvej at skifte til mysqli eller PDO.



  1. Sådan opretter du forbindelse til MySQL-databasen

  2. Føj en række til flere rækker i en anden tabel

  3. scope_identity vs ident_current

  4. Hvordan forbedrer man denne MySQL-forespørgsel ved hjælp af join?