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 モバイルからリンクされていましたが、標準の HTML ページとして表示されていました。JQuery モバイルでのページ遷移のため、それがメッセージの原因になっていると思います。それを考慮していないことを申し訳ありません。私はそれを適切な詳細とは見なしませんでした。ご提案いただきありがとうございます。

于 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 に答える