0

PHP 経由で MySQL に CSV ファイルをインポートしようとしています。文字エンコーディングは 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% を返します。何か案は?

ありがとう

4

1 に答える 1

0

あなたは$row = fgetts($handle)2回電話しています。最初の呼び出しはwhile()条件内にあり、行を消費します。2 番目の呼び出しはループ内にあり、別の行を消費します。最初の呼び出しからの行が失われています。

于 2012-04-20T16:07:19.417 に答える