2017-04-07 10 views
0

mysqlクエリからCSVファイルを作成しようとしていますが、日付に問題があります。私は二重引用符で各フィールドを囲む強制する必要がある、と私は、この機能を使用しています:PHP - 日付フィールドのCSV文字が間違った文字にエクスポートされる

$fp = fopen($filename, 'w'); 

$result = mysqli_query($db_conn, $query) or die(mysqli_error($db_conn)); 

    while($row = mysqli_fetch_assoc($result)) { 
     //fputcsv($fp, $row); 
     fputcsv($fp, array_map(function($value) { 
      if ($value == null || $value == "" || !isset($value) || $value === "0000-00-00 00:00:00") { 
       return '""'; 
      } 

      ///remove any ESCAPED double quotes within string. 
      $value = str_replace('\\"','"',$value); 
      //then force escape these same double quotes And Any UNESCAPED Ones. 
      $value = str_replace('"','\"',$value); 
      // remove \n 
      $value = str_replace("\n", '', $value); 
      $value = str_replace("\r", '', $value); 
      $value = str_replace("\r\n", '', $value); 
      //force wrap value in quotes and return 
      return "\"$value\""; 
     }, $row), ',', chr(0)); 
    } 

fclose($fp); 

エクスポートが日付フィールド以外からのすべての(と思う...)のフィールドに動作します。私はこの方法でファイルを読み取ろうWHE:

while (($data = fgetcsv($handle, null, ",", '"', '"')) !== false) { 
    // Do someting 
} 

すべてのフィールドが引用され、二重しかし、日付フィールドですこのコンテンツを持っている:

"\x00"2008-12-31 10:08:43"\x00" 

私はこれを解決するために多くの方法を試してみましたが...なし任意の結果..

答えて

0

私は同様の問題を抱えており、単一のスペース文字がCSVをクラッシュさせる可能性があることを理解しました。おそらくそれはあなたの問題を把握するのに役立ちますthisリンクを介して行ってください。

関連する問題