Le code suivant fonctionnera, mais il suppose que la longueur de tous les tableaux imbriqués est la même, en d'autres termes que chaque tableau imbriqué contient des valeurs pour tous les attributs définis dans le premier tableau imbriqué.
$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) . ")";
Cette solution fonctionnera avec n'importe quel nombre d'attributs définis dans le premier tableau imbriqué, tant que tous les autres tableaux imbriqués ont la même longueur. Pour le tableau ci-dessus, la sortie sera :
INSERT INTO table_name (name, age, gender) VALUES (Ian, 24, male), (Janice, 21, female)
Pour une démonstration, voir http://codepad.org/7SG7lHaH , mais notez que j'ai supprimé l'appel à mysql_real_escape_string() sur codepad.org, car ils n'autorisent pas la fonction. Dans votre propre code, vous devez l'utiliser.