Php 我的csv文件只获得一行

Php 我的csv文件只获得一行,php,Php,我正在将一个临时表输出到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['

我正在将一个临时表输出到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,但在您的代码中,我也无法使用它,在
$content
变量赋值的末尾,将
'\n'
更改为
“\n”
。在php中,使用单引号时不会插入转义序列。当使用双引号时,会对其进行插值。您将得到一个文本反斜杠,后跟一个文本
n
,而不是您要查找的换行符

至于使用,这可能不适用于您,因为您的平台使用了不正确的换行符。这种情况发生在Mac电脑上。如果这是您的问题,请尝试在文件解析代码之前启用。您可以在运行时使用以下命令执行此操作:

ini_set('auto_detect_line_endings', '1');
您将在文件中添加反斜杠和n,而不是换行符。试试这个:

$content = $ship. ... ."\n";

像这样使用,我在代码中看到的主要问题是使用单引号\n这就是为什么csv文件中没有添加新行字符,而您只在一行中获得结果的原因

$content = $ship.','.$title.','.$sailDate.','.$fromPort.','.$nights.','.$grade.','.$fare.','.$offer.','.$deposit."\n";
fwrite($fileName, $content);
  • 使用mysql不是一个好主意,现在还可以,但将来可以迁移到PDO或mysqli
  • 手动准备CSV,不是一个好主意,特殊字符必须转义,使用
  • 为什么您的CSV中只有一行,我认为是因为您的格式化方式存在一些格式化问题(或缺少格式化)

  • 什么是SQL查询?表的内容是什么?从sql select中可以得到多少行?此外,不鼓励使用
    mysql\uuu
    扩展名。它不支持准备好的语句。表内容是文本字段。。。可能是其中的某个字符吗?如果我将$content输出到屏幕上,就可以了。。。
    $content = $ship.','.$title.','.$sailDate.','.$fromPort.','.$nights.','.$grade.','.$fare.','.$offer.','.$deposit."\n";
    fwrite($fileName, $content);