2017-04-07 38 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鏈接,也許它會幫助你找出你的問題。