0

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

2 回答 2

0

很抱歉最初的问题,但我想这与我的代码无关。我想我发现了我的问题。

该页面是从 JQuery mobile 链接的,即使它是一个标准的 HTML 页面。由于 JQuery mobile 的页面转换,我认为这是导致消息的原因。很抱歉没有考虑到这一点。我不认为这是一个相关的细节。感谢您的所有建议。

于 2012-12-20T00:01:45.160 回答
-1

尝试将您的“死亡”条件更改为:

if (!$result) die( echo mysql_error() );

这至少会为您提供一些信息。在那之后你可能有更多的故障排除,但你必须从某个地方开始,这就是开始。

第 2 步故障排除:print_r( $headers )在第一个for循环之后立即使用

while故障排除的第 3 步:如果第一步都没有显示任何有用的信息,则开始在循环中打印调试输出。例如,print_r( array_values( $row ) )在该循环内部使用类似的东西。

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

于 2012-12-19T23:25:01.827 回答