繁体   English   中英

使用php从MySQL表创建CSV文件

[英]Creating a CSV file from MySQL table using php

此代码创建一个csv文件。 但是,我避免在字段中打印逗号,因为它用作分隔符(请参见第22行)。 现在,我想从字段中删除(回车和换行)。 添加$ somecontent。= str_replace(“ \\ n”,“”,$ val); 在第23行似乎不起作用。 有任何想法吗?

@chmod($export_csv, 0777);
    $fe = @fopen($export_csv."/export.csv", "w+");
    if($fe){           
        $somecontent = "";
        $fields_count = 0;
        // print field headers
        $db->query($sql_view);
        if($row = $db->fetchAssoc()){
            foreach($row as $key => $val){
                if($fields_count++ > 0) $somecontent .= ",";
                $somecontent .= ucfirst($key);
            }
        }
        $somecontent .= "\n"; 

        // print field values
        $db->query($sql_view);
        while($row = $db->fetchAssoc()){
            $fields_count = 0;
            foreach($row as $key => $val){
                if($fields_count++ > 0) $somecontent .= ",";
                $somecontent .= str_replace(",", "", $val);
                $somecontent .= str_replace("\n", "", $val);
            }
            $somecontent .= "\n";                    
        }

        // write some content to the opened file.
        if (fwrite($fe, $somecontent) == FALSE) echo 'file_writing_error'." (export.csv)"; 
        fclose($fe);
    }

使用fputcsv函数编写CSV文件。 PHP已经具有编写csv文件的功能。

您不需要自己处理转义,定界符,所有这些已经处理过。

这将为您处理所有这些事情,并使您免于许多头痛。

您可以直接从MySql进行

SELECT col1, col2, col3 INTO OUTFILE '/tmp/export.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM test_table;

您的$somecontent .= str_replace("\\n", "", $val)哪里? 我在您的代码中找不到。

您可以按照此处所示将数组指定为str_replace第一个参数。 因此,它将用第二个参数替换数组中存在的每个字符串。

例如, $somecontent .= str_replace(array("\\n", "\\r"), "", $val);

您可以尝试这样的方法,并与ASCII字符一起玩

$somecontent .= str_replace(CHR(10), " ", $val);
$somecontent .= str_replace(CHR(13), " ", $val); 

暂无
暂无

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

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