使用PHP将MySQL表导出为CSV的未定义错误

时间:2012-12-19 23:16:47

标签: php mysql csv

我正在使用我从旧帖子中找到的这个片段将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();
}

2 个答案:

答案 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 ) )的内容。

我的原始帖子应该更清楚地说明这是故障排除的第一步,因为除了运行代码之外,您没有提供任何有关您尝试进行故障排除的信息。