本文实例讲述了php使用指定编码导出mysql数据到csv文件的方法。分享给大家供大家参考。具体实现方法如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
/* * 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"; } ?> |