在PHP中处理要导入的CSV文件时,只导入一半的行
我们正在尝试通过PHP将CSV文件导入MySQL。字符编码为utf-8(检查、标准化和验证)。使用MySQL客户端接口工具导入时,所有行都存在。代码如下:在PHP中处理要导入的CSV文件时,只导入一半的行,php,csv,fopen,Php,Csv,Fopen,我们正在尝试通过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'; $fo
$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_计数器变量返回大约50%的所有行。有什么想法吗
谢谢您打了两次电话给
$row=fgetts($handle)
。第一个调用在while()
条件中并使用一行,第二个调用在循环中并使用另一行。第一次调用的行正在丢失