php使用指定編碼導(dǎo)出mysql數(shù)據(jù)到csv文件的方法

字號:


    本文實例講述了php使用指定編碼導(dǎo)出mysql數(shù)據(jù)到csv文件的方法。分享給大家供大家參考。具體實現(xiàn)方法如下:
    <?php
    /*
    * PHP code to export MySQL data to CSV
    *
    * Sends the result of a MySQL query as a CSV file for download
    * Easy to convert to UTF-8.
    */
    /*
    * establish database connection
    */
    $conn = mysql_connect('localhost', 'login', 'pass') or die(mysql_error());
    mysql_select_db('database_name', $conn) or die(mysql_error($conn));
    mysql_query("SET NAMES CP1252");
    /*
    * execute sql query
    */
    $query = sprintf('SELECT field1,field2 FROM table_name');
    $result = mysql_query($query, $conn) or die(mysql_error($conn));
    /*
    * send response headers to the browser
    * following headers instruct the browser to treat the data as a csv file called export.csv
    */
    header('Content-Type: text/csv; charset=cp1252');
    header('Content-Disposition: attachment;filename=output.csv');
    /*
    * output header row (if atleast one row exists)
    */
    $row = mysql_fetch_assoc($result);
    if ($row) {
    echocsv(array_keys($row));
    }
    /*
    * output data rows (if atleast one row exists)
    */
    while ($row) {
    echocsv($row);
    $row = mysql_fetch_assoc($result);
    }
    /*
    * echo the input array as csv data maintaining consistency with most CSV implementations
    * - uses double-quotes as enclosure when necessary
    * - uses double double-quotes to escape double-quotes
    * - uses CRLF as a line separator
    */
    function echocsv($fields)
    {
    $separator = '';
    foreach ($fields as $field) {
    if (preg_match('/\\r|\\n|,|"/', $field)) {
    $field = '"' . str_replace('"', '""', $field) . '"';
    }
    echo $separator . $field;
    $separator = ',';
    }
    echo "\r\n";
    }?>