而使用fgetcsv的循环只在第一个实例上更新MySQL数据库

时间:2013-06-10 08:08:33

标签: php mysql csv fopen fgetcsv

我将CSV文件拖入脚本,解析它然后更新我的MySQL表。问题是它只插入CSV文件第二行的数据(第一行被跳过,因为它是列的标题)。这是我的代码:

$f = fopen("sample.csv", "r");
while(($line = fgetcsv($f)) !== FALSE){
    $time = $line[0];

    //SKIP FIRST LINE (WITH HEADERS)
    if($time == "Time"){
        continue;
    }
    else{
        $size = $line[1];
        $location = $line[2];
        $county = $line[3];
        $state = $line[4];
        $lat = $line[5];
        $lon = $line[6];
        $comments = $line[7];
        $sql = "INSERT INTO sample (time, size, location, county, state, lat, lon, comments) VALUES ('$time', '$size', '$location', '$county', '$state', '$lat', '$lon', '$comments')";
        $result = $mysqli->query($sql);
        //CHECK TO SEE IF THE LOOP IS WORKING THROUGH ALL DATA
        echo $size;
    }
}
fclose($f);

问题是它成功跳过第一行然后在第二个循环中跳过,它成功更新了数据库。正如您所看到的,我已经回显了$ size的值,它回显了所有行的所有值,这意味着它正确地循环遍历所有数据。我不确定为什么它不会将数据添加到每个后续行中。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

你需要将文本与文件分开,试试这个:

while(($line = fgetcsv($f,4096,",", '"')) !== FALSE){