繁体   English   中英

处理要在PHP中导入的CSV文件时,仅会导入一半行

[英]When processing a CSV file for import in PHP only half of the rows are imported

我们正在尝试通过PHP将CSV文件导入MySQL。 字符编码为utf-8(经过检查,标准化和验证)。 使用MySQL客户端界面工具导入时,所有行均存在。 代码如下:

 $handle = fopen($this->file_name, 'r+') or die ('cant open a '.$this->file_name);
 $new_filename = $upload_directory.'/'.date('Y_m_d_H_i_s').'_data_import.csv';
 $for_import = fopen($new_filename, 'x+') or die ('cant open a '.$new_filename.'_for_import');

 $data = array();
 $row_counter = 0;

 while (($row = fgetss($handle)) !== false)
 {
    $row = fgetss($handle);
    if (($row_counter > $this->rows_to_ignore))
{
    $enc = mb_detect_encoding($row);
    $row = iconv($enc, 'UTF-8', $row);
    $row = str_replace(", ", '\\, ', $row);
    $row = trim($row);
    $row = str_getcsv($row, ',', '"', '\\');
    fputcsv($for_import, $row, ',', '"');
}

$row_counter++;

 }
 fclose($for_import);
 fclose($handle);

row_counter变量返回所有行的大约50%。 有任何想法吗?

谢谢

您两次调用$row = fgetts($handle) 第一个调用处于while()条件下,占用一行,第二个调用位于循环内,占用另一行。 第一次调用的行已丢失。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM