通过PHP将查询结果导出为CSV
假设我在一个名为$query的变量中存储了一个查询。我想在结果页面上创建名为“导出为CSV”的小型超链接。我该怎么做?嗯通过PHP将查询结果导出为CSV,php,mysql,csv,export-to-excel,Php,Mysql,Csv,Export To Excel,假设我在一个名为$query的变量中存储了一个查询。我想在结果页面上创建名为“导出为CSV”的小型超链接。我该怎么做?嗯 <a href="yourexport.php" title="export as csv">Export as CSV</a> CSV=逗号分隔值=用逗号分隔值 您必须逐行回显/打印结果,以逗号(,)分隔 我假设$query是查询的结果集,它是一个关联数组: while($query = mysql_fetch_assoc($rs)) { //
<a href="yourexport.php" title="export as csv">Export as CSV</a>
CSV=逗号分隔值=用逗号分隔值 您必须逐行回显/打印结果,以逗号(,)分隔 我假设$query是查询的结果集,它是一个关联数组:
while($query = mysql_fetch_assoc($rs)) {
// loop till the end of records
echo $query["field1"] . "," . $query["field2"] . "," . $query["field3"] . "\r\n";
}
其中,$rs是资源句柄
要让浏览器弹出下载框,必须在文件开头设置标题(假定文件名为export.csv):
就这样
p、 此方法不会在服务器中保留物理文件。如果要在服务器中生成文件,请使用传统的fopen和fwrite功能。$query=“SELECT*FROM table_name”;
$query = "SELECT * FROM table_name";
$export = mysql_query ($query ) or die ( "Sql error : " . mysql_error( ) );
$fields = mysql_num_fields ( $export );
for ( $i = 0; $i < $fields; $i++ )
{
$header .= mysql_field_name( $export , $i ) . "\t";
}
while( $row = mysql_fetch_row( $export ) )
{
$line = '';
foreach( $row as $value )
{
if ( ( !isset( $value ) ) || ( $value == "" ) )
{
$value = "\t";
}
else
{
$value = str_replace( '"' , '""' , $value );
$value = '"' . $value . '"' . "\t";
}
$line .= $value;
}
$data .= trim( $line ) . "\n";
}
$data = str_replace( "\r" , "" , $data );
if ( $data == "" )
{
$data = "\n(0) Records Found!\n";
}
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=your_desired_name.xls");
header("Pragma: no-cache");
header("Expires: 0");
print "$header\n$data";
$export=mysql\u query($query)或die(“Sql错误:”.mysql\u错误());
$fields=mysql\u num\u字段($export);
对于($i=0;$i<$fields;$i++)
{
$header.=mysql\u字段\u名称($export,$i)。“\t”;
}
while($row=mysql\u fetch\u row($export))
{
$line='';
foreach(行作为$value)
{
如果((!isset($value))| |($value==“”)
{
$value=“\t”;
}
其他的
{
$value=str_replace(“,“,”,$value);
$value=“.”.$value.“.”“\t”;
}
$line.=$value;
}
$data.=修剪($line)。“\n”;
}
$data=str_replace(“\r”,”,$data);
如果($data==“”)
{
$data=“\n(0)找到记录!\n”;
}
标题(“内容类型:应用程序/八位字节流”);
标题(“内容配置:附件;文件名=您的所需名称.xls”);
标题(“杂注:无缓存”);
标题(“到期日:0”);
打印“$header\n$data”;
ArneRie和您的答案完美结合
header("Expires: 0");
header("Cache-control: private");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Description: File Transfer");
header("Content-Type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=export.csv");
$query = "SELECT * FROM table_name";
$export = mysql_query ($query ) or die ( "Sql error : " . mysql_error( ) );
$fields = mysql_num_fields ( $export );
for ( $i = 0; $i < $fields; $i++ )
{
$header .= mysql_field_name( $export , $i ) . "\t";
}
while( $row = mysql_fetch_row( $export ) )
{
$line = '';
foreach( $row as $value )
{
if ( ( !isset( $value ) ) || ( $value == "" ) )
{
$value = "\t";
}
else
{
$value = str_replace( '"' , '""' , $value );
$value = '"' . $value . '"' . "\t";
}
$line .= $value;
}
$data .= trim( $line ) . "\n";
}
$data = str_replace( "\r" , "" , $data );
if ( $data == "" )
{
$data = "\n(0) Records Found!\n";
}
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=your_desired_name.xls");
header("Pragma: no-cache");
header("Expires: 0");
print "$header\n$data";