使用php从MySQL表创建CSV文件

时间:2011-04-06 07:37:15

标签: php csv export-to-csv

此代码创建一个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);
    }

4 个答案:

答案 0 :(得分:2)

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

您不需要自己处理所有已经处理的转义,分隔符。

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

答案 1 :(得分:1)

你可以from MySql directly

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

答案 2 :(得分:0)

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

您可以将数组指定为str_replace的第一个参数,如there所示。因此,它将使用第二个参数替换数组中的每个字符串。

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

答案 3 :(得分:0)

你可以试试这样的东西,玩ASCII字符