Poniższy kod będzie działał, ale zakłada się, że długość wszystkich zagnieżdżonych tablic jest taka sama, innymi słowy, że każda zagnieżdżona tablica zawiera wartości wszystkich atrybutów zdefiniowanych w pierwszej zagnieżdżonej tablicy.
$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) . ")";
To rozwiązanie będzie działać z dowolną liczbą atrybutów zdefiniowanych w pierwszej tablicy zagnieżdżonej, o ile wszystkie inne tablice zagnieżdżone mają tę samą długość. Dla tablicy powyżej dane wyjściowe będą wyglądały następująco:
INSERT INTO table_name (name, age, gender) VALUES (Ian, 24, male), (Janice, 21, female)
Aby zobaczyć demonstrację, zobacz http://codepad.org/7SG7lHaH , ale zauważ, że usunąłem wywołanie mysql_real_escape_string() na codepad.org, ponieważ nie pozwalają na tę funkcję. We własnym kodzie powinieneś go użyć.