Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Fügen Sie mehrere Felder mit der foreach-Schleife ein

Sie führen eine Suche auf $_POST durch und nicht auf den Namen/Alter-Arrays. Sie sollten für jeden Namen oder das Altersarray so vorgehen:

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

Ich möchte auch darauf hinweisen, dass Sie derzeit anfällig für SQL-Injection sind, also habe ich den Schritt hinzugefügt, Ihre Zeichenfolgen für Name/Alter zu maskieren.

Ich würde auch dringend vorschlagen, einfach eine einzelne Masseneinfügung in die DB vorzunehmen, anstatt jeden Datensatz einzeln einzufügen (die Implementierung überlasse ich Ihnen). Dieser Ansatz ist aus Leistungssicht fast immer vorzuziehen.

Schließlich sollten Sie mysql_* WIRKLICH nicht verwenden Funktionen, da sie veraltet sind. Erwägen Sie einen Wechsel zu mysqli oder PDO.