De volgende code werkt, maar gaat ervan uit dat de lengte van alle geneste arrays hetzelfde is, met andere woorden dat elke geneste array waarden bevat voor alle attributen die in de eerste geneste array zijn gedefinieerd.
$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) . ")";
Deze oplossing werkt met een willekeurig aantal attributen dat is gedefinieerd in de eerste geneste array, zolang alle andere geneste arrays dezelfde lengte hebben. Voor de array erboven is de uitvoer:
INSERT INTO table_name (name, age, gender) VALUES (Ian, 24, male), (Janice, 21, female)
Voor een demonstratie zie http://codepad.org/7SG7lHaH , maar merk op dat ik de aanroep van mysql_real_escape_string() op codepad.org heb verwijderd, omdat ze de functie niet toestaan. In uw eigen code moet u deze gebruiken.