che*_*dou 9 php mysql multidimensional-array
我有一个来自csv的数组,其结构与此类似:
Array (
[0] => Array ( [0] => name [1] => age [2] => gender )
[1] => Array ( [0] => Ian [1] => 24 [2] => male )
[2] => Array ( [0] => Janice [1] => 21 [2] => female )
etc
Run Code Online (Sandbox Code Playgroud)
我想将其插入到mysql表中,其中第一个数组(名称,年龄,性别)的项目是列标题,每个后续数组是表格中的一行.
任何人都可以建议最好的方法来做到这一点,因为我撞墙了,它给我留下了一个伤脑筋!
Jan*_*enk 10
以下代码将起作用,但它假定所有嵌套数组的长度相同,换句话说,每个嵌套数组包含第一个嵌套数组中定义的所有属性的值.
$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) . ")";
Run Code Online (Sandbox Code Playgroud)
只要所有其他嵌套数组具有相同的长度,此解决方案将与第一个嵌套数组中定义的任意数量的属性一起使用.对于上面的数组,输出将是:
INSERT INTO table_name (name, age, gender) VALUES (Ian, 24, male), (Janice, 21, female)
Run Code Online (Sandbox Code Playgroud)
有关演示,请参阅http://codepad.org/7SG7lHaH,但请注意我在codepad.org上删除了对mysql_real_escape_string()的调用,因为它们不允许该函数.在您自己的代码中,您应该使用它.