简体   繁体   English

在PHP中将MySQL数据导出为CSV

[英]Export mysql data as CSV in php

In my code, I need to preserve all commas in each fields from the mysql table in CSV Export... 在我的代码中,我需要在CSV导出中的mysql表中保留每个字段中的所有逗号。

For this I used the double quotes to all fields. 为此,我对所有字段都使用了双引号。 This code is perfectly running in the Linux System.. While running the same code in windows, double quotes also displaying in Exported CSV file.. What is the problem in this? 该代码可以在Linux系统中完美运行。.在Windows中运行相同的代码时,双引号也会显示在“导出的CSV”文件中。.这是什么问题? can anyone tell me why it is happening like this? 谁能告诉我为什么会这样?

    function  arrayToCSV($array, $header_row = true, $col_sep = ",", $row_sep = "\n", $qut = '"',$pgeTyp ="")
    {
    /*col_sep =htmlentities($col_sep);
    $row_sep =htmlentities($row_sep);
    $qut =htmlentities($qut);*/
    if (!is_array($array) or !is_array($array[0])) return false;
    //Header row.
    if ($header_row)
    {
    foreach ($array[0] as $key => $val)
    {
    //Escaping quotes.
    $key = str_replace($qut, "$qut$qut", $key);
    $output .= $col_sep.$qut.$key.$qut;
    }
    $output = substr($output, 1)."\n".$row_sep;
    }
    //Data rows.
    foreach ($array as $key => $val)
    {
    $tmp = '';

    foreach ($val as $cell_key => $cell_val)
    {  
    if($pgeTyp!="twitter" && $pagTyp!="jigsaw" && $pgeTyp=="")
    $timeValue = @checkTimeStamp($cell_val);
    else  $timeValue = '';
    if($timeValue=="True")
    {
    $cell_val = str_replace($qut, "$qut$qut", convert_time_zone($cell_val,'d-M-y h:i:s'));
    }
    else
    {
    $cell_val = str_replace($qut, "$qut$qut", $cell_val);
    }

    $tmp .= $col_sep.$qut.$cell_val.$qut;
    }
    $output .= substr($tmp, 1).$row_sep;
    }
    return $output;
    }

Function call is, 函数调用是

$dbResult1[] =array('url_twitter_userid' => $selecttwittermainFtch['url_twitter_userid'],'url_tweet_name' => "$url_tweet_name",'url_twitter_uname' => "$url_twitter_uname",'url_twitter_url' => $selecttwittermainFtch['url_twitter_url'],'url_twitter_location' => "$url_twitter_location",'url_twitter_followers' => $selecttwittermainFtch['url_twitter_followers'],'url_twitter_following' => $selecttwittermainFtch['url_twitter_following'],'url_modified_on' => $modifiedon);   
echo arrayToCSV($dbResult1, true, ", ", "\n",  '','twitter');                 

Try this: 尝试这个:

function sqlQueryToCSV($filename, $query)
{
    $result = mysql_query($query);
    $num_fields = mysql_num_fields($result);
    $headers = array();
    for ($i = 0; $i < $num_fields; $i++) {
            $headers[] = mysql_field_name($result , $i);
    }
    $fp = fopen(mysql_real_escape_string(getcwd().'\\'.$filename), 'w');
    if ($fp) {
 fputcsv($fp, $headers);
 while ($row = mysql_fetch_array($result)) {
     $arrayValues = array();
     foreach ($headers as $header)
     {
         $arrayValues[] = $row[$header];
     }
     fputcsv($fp, $arrayValues);
 }
    }
    fclose($fp);
}

Source: http://forums.exchangecore.com/topic/907-function-to-convert-mysql-query-to-csv-file-with-php/ 资料来源: http : //forums.exchangecore.com/topic/907-function-to-convert-mysql-query-to-csv-file-with-php/

When you are opening it in Windows with whatever program (Guessing Excel), you should be able to specify what characters you use to delimit/surround the fields. 在Windows中使用任何程序(Guessing Excel)打开它时,您应该能够指定用于分隔/包围字段的字符。 It's probably just assuming that you are just wanting to use commas to separate but ignoring the double quotes surrounding them. 可能只是假设您只是想使用逗号分隔而忽略了它们周围的双引号。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM