Mysql
 sql >> Base de données >  >> RDS >> Mysql

insérer plusieurs champs à l'aide de la boucle foreach

Vous faites un foreach sur $_POST plutôt que sur les tableaux nom/âge. Vous devriez faire foreach sur le tableau name ou age comme ceci :

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')");
    } 
}

Je voudrais également noter que vous êtes actuellement sensible à l'injection SQL, j'ai donc ajouté l'étape d'échappement de vos chaînes pour le nom/l'âge.

Je suggérerais également fortement de simplement faire une seule insertion en masse dans la base de données au lieu d'une insertion de chaque enregistrement individuellement (je vous laisse le soin de l'implémenter). Cette approche est presque toujours préférable du point de vue des performances.

Enfin, vous ne devriez VRAIMENT pas utiliser mysql_* fonctions car elles sont obsolètes. Envisagez de passer à mysqli ou PDO.