sql >> Base de Datos >  >> RDS >> Mysql

insertar múltiples campos usando el bucle foreach

Estás haciendo un foreach en $_POST en lugar de en las matrices de nombre/edad. Debería estar haciendo foreach en una matriz de nombre o edad como esta:

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

También me gustaría señalar que actualmente es susceptible a la inyección de SQL, por lo que agregué el paso de escapar de sus cadenas para nombre/edad.

También recomendaría encarecidamente simplemente hacer una sola inserción masiva en la base de datos en lugar de una inserción de cada registro individualmente (lo dejaré a usted para implementarlo). Este enfoque casi siempre es preferible desde el punto de vista del rendimiento.

Finalmente, REALMENTE no debería usar mysql_* funciones ya que están en desuso. Considere cambiar a mysqli o PDO.