1

一時テーブルをcsvファイルに出力していますが、1行しか取得できませんか?

ここにコードがあります

$fileName = fopen('cmv_sailings.csv', 'w');

while ($i = mysql_fetch_assoc($export)) {
    $ship = $i['code'];
    $title = $i['title'];
    $sailDate = $i['sailDate'];
    $fromPort = $i['fromport'];
    $nights = $i['nights'];
    $grade = $i['type'];
    $fare = $i['fare'];
    $offer = $i['offerFare'];
    $deposit = $i['deposit'];

    $content = $ship.','.$title.','.$sailDate.','.$fromPort.','.$nights.','.$grade.','.$fare.','.$offer.','.$deposit.'\n';

    fwrite($fileName, $content);
}

fclose($filename);

私は今手がかりを持っていません。fputcsv を使用しようとしましたが、それも機能しません

4

4 に答える 4

3

コードでは、$content変数の割り当ての最後で、 に変更'\n'"\n"ます。PHP では、一重引用符を使用する場合、エスケープ シーケンスは補間されません。二重引用符を使用すると補間されます。n探している改行の代わりに、リテラルのバックスラッシュの後にリテラルが続きます。

の使用fputcsv()に関しては、プラットフォームに不適切な改行を使用しているため、うまくいかなかった可能性があります。これは Mac で発生します。auto_detect_line_endingsこれが問題だった場合は、ファイル解析コードの前にオンにしてみてください。ini_set()次のように実行時に実行できます。

ini_set('auto_detect_line_endings', '1');
于 2012-11-25T15:19:50.433 に答える
0

このように使用します。コードで見られる主な問題は、\n に一重引用符を使用していることです。そのため、csv ファイルに改行文字が追加されず、結果が 1 行で取得されます。

$content = $ship.','.$title.','.$sailDate.','.$fromPort.','.$nights.','.$grade.','.$fare.','.$offer.','.$deposit."\n";
fwrite($fileName, $content);
于 2012-11-25T15:35:17.407 に答える
0
$content = $ship. ... .'\n';

改行文字ではなく、バックスラッシュと n をファイルに追加しています。これを試して:

$content = $ship. ... ."\n";
于 2012-11-25T15:29:53.480 に答える
0
  1. mysql_ を使用するのは良い考えではありません。今のところは問題ありませんが、将来的には PDO または mysqli に移行してください。
  2. CSV を手動で準備することはお勧めできません。特殊文字はエスケープする必要があります。ここで fputcsv の説明を使用してください
  3. CSV に 1 行しかないのは、書式設定の方法に起因する書式設定の問題 (または書式設定の欠落) が原因だと思います。
于 2012-11-25T15:39:19.530 に答える