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

Ein mehrdimensionales PHP-Array in eine MySQL-Datenbank einfügen

Der folgende Code funktioniert, setzt aber voraus, dass die Länge aller verschachtelten Arrays gleich ist, mit anderen Worten, dass jedes verschachtelte Array Werte für alle Attribute enthält, die im ersten verschachtelten Array definiert sind.

$array = array(
    array('name', 'age', 'gender' ),
    array('Ian', 24, 'male'),
    array('Janice', 21, 'female')
);

$fields = implode(', ', array_shift($array));

$values = array();
foreach ($array as $rowValues) {
    foreach ($rowValues as $key => $rowValue) {
         $rowValues[$key] = mysql_real_escape_string($rowValues[$key]);
    }

    $values[] = "(" . implode(', ', $rowValues) . ")";
}

$query = "INSERT INTO table_name ($fields) VALUES (" . implode (', ', $values) . ")";

Diese Lösung funktioniert mit einer beliebigen Anzahl von Attributen, die im ersten verschachtelten Array definiert sind, solange alle anderen verschachtelten Arrays dieselbe Länge haben. Für das obige Array lautet die Ausgabe:

INSERT INTO table_name (name, age, gender) VALUES (Ian, 24, male), (Janice, 21, female)

Eine Demonstration finden Sie unter http://codepad.org/7SG7lHaH , aber beachten Sie, dass ich den Aufruf von mysql_real_escape_string() auf codepad.org entfernt habe, da sie die Funktion nicht zulassen. In Ihrem eigenen Code sollten Sie es verwenden.