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



我们正在尝试通过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()状态并消耗一行,第二个调用在循环内并消耗另一行。 第一次调用中的行将丢失。

最新更新