将csv导出到他的系统上的任何其他程序用户

时间:2014-03-11 17:20:48

标签: php csv

我想将我的数据库数据导出为CSV或询问用户"打开他的本地支持程序"。

导出到csv我可以理解使用此代码:

<?php

header("Content-type: text/csv; charset=UTF-8");
header('Content-Disposition: attachment; filename=Export.csv');
//connection
$con = mysql_connect('localhost', 'root', '');
if(!$con){
    echo "Error connection";
}
//select db
$select_db = mysql_select_db('country', $con);
if(!$select_db){
    echo "Error to select database";
}
mysql_set_charset("utf8", $con);

//Mysql query to get records from datanbase
$user_query = mysql_query('SELECT * FROM countries');

//While loop to fetch the records
$contents = "ccode,country\n";
while($row = mysql_fetch_array($user_query))
{
    $contents.=$row['ccode'].",";
    $contents.=$row['country']."\n";
}

$contents_final = chr(255).chr(254).mb_convert_encoding($contents, "UTF-16LE","UTF-8");
print $contents_final;

?>

如何管理第二部分?显示使用本地安装程序打开的选项? 上面的代码是正确的吗?

1 个答案:

答案 0 :(得分:1)

header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private',false);
header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename="your_file_name.csv"');
header('Content-Transfer-Encoding: binary');

这将使浏览器显示保存/打开文件的对话框。

你还应该考虑a)切换到mysqli_或PDO和b)使用PHP的内置csv函数,例如

ob_start();
$f = fopen('php://output', 'w');
// $results comes from mysqli_ functions
foreach ( $results as $k => $v ) {
    fputcsv($f, $v);
}
$output = ob_get_contents();
ob_end_clean();
echo $output;
相关问题