Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

inserir vários campos usando o loop foreach


Você está fazendo um foreach em $_POST em vez das matrizes de nome/idade. Você deve estar fazendo foreach na matriz de nome ou idade assim:
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')");
    } 
}

Eu também observaria que você está atualmente suscetível à injeção de SQL, então adicionei a etapa de escapar de suas strings para nome/idade.

Eu também sugeriria simplesmente fazer uma única inserção em massa no banco de dados em vez de uma inserção de cada registro individualmente (deixarei isso para você implementar). Essa abordagem é quase sempre preferível do ponto de vista do desempenho.

Finalmente, você REALMENTE não deveria estar usando mysql_* funções como eles são obsoletos. Considere mudar para mysqli ou PDO.