PHP导入CSV到MYSQL的问题

CSV中字段的列位置可能变动,需要通过判断得出INSERT INTO语句中VALUES的内容。
如何判断?
<?php
//导入CSV表格:CSV转数组
$fp = fopen($_FILES['myfile']['tmp_name'], 'r');
while ( ($row = fgetcsv($fp)) !== FALSE ) {
$arr[] = $row;
}
fclose($fp);
//循环插入SQL。
$link = mysqli_connect("127.0.0.1", "root", "root", "zwxiaomi");
if (!$link){echo"<script>alert('数据库连接失败!')</script>";}
$link->query("SET NAMES UTF8");

$zd='姓名,电话,地址'; //SQL数据表的字段

$crkg=0;
foreach($arr as $row){

if($crkg==0){ //判断遍历的是否是第一行,因为第一行是字段名,不插入SQL。

//这里可以中$row[0]、$row[1]的方式得出CSV的字段名,字段名是固定的,例如'姓名,电话,地址',但字段所在的列位置有可能变化,例如‘电话’有时在第二列,有时在第三列,或其它列,这就是问题,导致我不知道怎么写INSERT INTO语句的VALUES ('""')。
//问题:我如何可以在这里根据 $zd 的顺序,得出对应的列数并排序。如:$v=row[2],row[3],row[6]
//不知道这里的代码怎么写,谢谢。

$crkg=1;

}else{ //第二行开始遍历插入SQL。
$sql="INSERT INTO zaitugongdan (" . $zd . ") VALUES ('" . $v . "')";
$link->query($sql)
}

}
?>

直接引入带key和value的数组$data :
$keys = array_keys($data);
$values = array_values($data);
if($keys &&$values ){
$sql="INSERT INTO zaitugongdan (" . implode(',',$keys) . ") VALUES ('" . implode(',',$values ) . "')";
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-03-23
具体还是要看你csv情况,做个判断,调整VALUES值的位置
相似回答