1

我正在将一个临时表输出到一个 csv 文件,但它只有一行?

这是代码

$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而不是你正在寻找的换行符。

至于 using fputcsv(),由于为您的平台使用了不正确的换行符,这可能对您不起作用。这发生在 Mac 上。如果这是您的问题,请尝试在auto_detect_line_endings文件解析代码之前打开。您可以在运行时使用ini_set()如下方式执行此操作:

ini_set('auto_detect_line_endings', '1');
于 2012-11-25T15:19:50.433 回答
0
$content = $ship. ... .'\n';

您正在将反斜杠和 n 添加到文件中,而不是换行符。试试这个:

$content = $ship. ... ."\n";
于 2012-11-25T15:29:53.480 回答
0

像这样使用,我在你的代码中看到的主要问题是使用单引号 \n 这就是为什么没有在你的 csv 文件中添加换行符并且你在一行中得到你的结果

$content = $ship.','.$title.','.$sailDate.','.$fromPort.','.$nights.','.$grade.','.$fare.','.$offer.','.$deposit."\n";
fwrite($fileName, $content);
于 2012-11-25T15:35:17.407 回答
0
  1. 使用 mysql_ 不是一个好主意,目前还可以,但将来,迁移到 PDO 或 mysqli
  2. 手动准备 CSV,不是一个好主意,特殊字符必须转义,这里使用 fputcsv 描述
  3. 为什么您的 CSV 中只有一行,我认为是因为一些格式问题(或缺少格式),来自您的格式设置方式。
于 2012-11-25T15:39:19.530 回答