Følgende kode fungerer, men den antager, at længden af alle indlejrede arrays er den samme, med andre ord, at hvert indlejret array indeholder værdier for alle de attributter, der er defineret i det første indlejrede array.
$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) . ")";
Denne løsning vil fungere med et hvilket som helst antal attributter, der er defineret i det første indlejrede array, så længe alle andre indlejrede arrays har samme længde. For arrayet over vil outputtet være:
INSERT INTO table_name (name, age, gender) VALUES (Ian, 24, male), (Janice, 21, female)
For en demonstration se http://codepad.org/7SG7lHaH , men bemærk, at jeg fjernede kaldet til mysql_real_escape_string() på codepad.org, fordi de ikke tillader funktionen. I din egen kode skal du bruge den.