Đoạn mã sau sẽ hoạt động, nhưng nó giả định rằng độ dài của tất cả các mảng lồng nhau là như nhau, hay nói cách khác là mỗi mảng lồng nhau chứa các giá trị cho tất cả các thuộc tính được xác định trong mảng lồng nhau đầu tiên.
$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) . ")";
Giải pháp này sẽ hoạt động với bất kỳ số lượng thuộc tính nào được xác định trong mảng lồng nhau đầu tiên, miễn là tất cả các mảng lồng nhau khác có cùng độ dài. Đối với mảng ở trên, đầu ra sẽ là:
INSERT INTO table_name (name, age, gender) VALUES (Ian, 24, male), (Janice, 21, female)
Để biết phần trình diễn, hãy xem http://codepad.org/7SG7lHaH , nhưng lưu ý rằng tôi đã xóa lệnh gọi tới mysql_real_escape_string () trên codepad.org, vì chúng không cho phép hàm. Trong mã của riêng bạn, bạn nên sử dụng nó.