我正在使用我从旧帖子中找到的这个片段将MySQL表格下载到CSV。它可以很好地下载CSV,但是我总是会收到“未定义”错误,而我的浏览器窗口中没有显示其他详细信息。 CSV文件不包含有关与文本混合的错误的任何数据。任何有关我的错误的帮助将非常感激。
我已经尝试过测试我的SQL语句,而且运行正常。
$result = mysql_query("SELECT * FROM employees");
if (!$result) die('Couldn\'t fetch records');
$num_fields = mysql_num_fields($result);
$headers = array();
for ($i = 0; $i < $num_fields; $i++) {
$headers[] = mysql_field_name($result , $i);
}
$fp = fopen('php://output', 'w');
if ($fp && $result) {
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="employeelist.csv"');
header('Pragma: no-cache');
header('Expires: 0');
fputcsv($fp, $headers);
while ($row = mysql_fetch_assoc($result)) {
fputcsv($fp, array_values($row));
}
die();
}
答案 0 :(得分:0)
很抱歉最初的问题,但我想这与我的代码有点无关。我想我找到了问题。
该页面是从JQuery mobile链接的,即使它是一个标准的HTML页面。由于使用JQuery mobile进行页面转换,我认为这会导致消息。很抱歉没有考虑到这一点。我不认为这是一个相关的细节。感谢您的所有建议。
答案 1 :(得分:-1)
尝试将'die'条件更改为:
if (!$result) die( echo mysql_error() );
这至少会为您提供一些信息。在那之后你可能还有更多要解决的问题,但是你必须从某个地方开始,这就是开始。
第2步进行问题排查:
在第一个print_r( $headers )
循环
for
第3步进行故障排除:
如果前面的步骤都没有显示任何有用的内容,则在while
循环内开始打印调试输出。例如,在该循环中使用类似print_r( array_values( $row ) )
的内容。
我的原始帖子应该更清楚地说明这是故障排除的第一步,因为除了运行代码之外,您没有提供任何有关您尝试进行故障排除的信息。