所以,首先让我说明一下,在您开始提供关于如何简单地将完整的表导出到CSV文件的其他建议之前,这不是我想要做的(我的演示代码现在建议这样做,但我只是通过shabaz浏览器测试整个下载过程)。
实际上,我想构建要从多个表导出的内容。尽管如此,我现在只是尝试通过浏览器进行导出和下载。
我从网上的一个例子中得到了这段代码,目前它只是将数据打印到我的浏览器上。
以下是我正在测试的代码:
$result = mysql_query("SELECT * FROM results_tb") or die(mysql_error());
// I hard-code the column names so I can capitalize, add spaces, etc.
$fields = '"User ID","Test_id","score %","Time taken"'."\n";
// Iterate through the rows of data
while ($row = mysql_fetch_assoc($result))
{
//echo $row['user_id'];
$fields .= '"'.$row['user_id'].'","'.$row['test_id'].'","'.$row['score'].'","'.$row['time_elapsed'].'"'."\n";
}
// Set our headers
header('Content-type: text/csv');
// To display data in-browser, change the header below to:
// header("Content-Disposition: inline");
header("Content-Disposition: attachment; filename=event_registrations.csv");
// Output our data
echo $fields;我假设这个例子是裤子,那么有人能给我解释一下怎么做吗?
非常感谢:D
我的头响应被firebug-Lite捕获:
Date Wed, 18 May 2011 14:15:18 GMT
X-Powered-By PHP/5.1.6
Content-disposition attachment;filename=MyVerySpecial.csv
Connection close
Content-Length 992
Server Apache/2.2.3 (Red Hat)
Content-Type text/csv发布于 2011-05-18 21:56:56
我的猜测是,您将display_errors设置为off,并且在进行这些header()调用之前输出了一些内容。这将导致您所看到的行为。
首先,编辑你的php.ini文件,确保display_errors是打开的,并且你的PHP脚本(例如error_reporting(E_ALL);)中有错误报告。现在你可能会在屏幕上看到一个错误。大致是这样的:
Cannot send header information. Output already started by XXX.php (line YYY).可能发生的情况是,您在发送header()命令之前意外地发送了一个空格或换行符,并且您正在抑制该错误。当您在这些header()调用之前向浏览器发送某些内容时,它们将被忽略。因此,浏览器将只显示您发送的内容,而不是让用户下载。
如果您使用的是Firefox,您还可以使用Firebug扩展来检查下载的HTTP响应头。
https://stackoverflow.com/questions/6045376
复制相似问题