Kode berikut akan berfungsi, tetapi mengasumsikan bahwa panjang semua larik bersarang adalah sama, dengan kata lain bahwa setiap larik bersarang berisi nilai untuk semua atribut yang didefinisikan dalam larik bersarang pertama.
$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) . ")";
Solusi ini akan bekerja dengan sejumlah atribut yang ditentukan dalam larik bersarang pertama, selama semua larik bersarang lainnya memiliki panjang yang sama. Untuk array di atas outputnya adalah:
INSERT INTO table_name (name, age, gender) VALUES (Ian, 24, male), (Janice, 21, female)
Untuk demonstrasi, lihat http://codepad.org/7SG7lHaH , tetapi perhatikan bahwa saya menghapus panggilan ke mysql_real_escape_string() di codepad.org, karena mereka tidak mengizinkan fungsi tersebut. Dalam kode Anda sendiri, Anda harus menggunakannya.