【问题标题】:MySQL and fputcsv PHP fields delimiter not working [closed]MySQL和fputcsv PHP字段分隔符不起作用[关闭]
【发布时间】:2014-10-24 19:01:03
【问题描述】:

这是我的代码:

<?php
error_reporting(E_ALL ^ E_NOTICE);
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=data.csv');
$output = fopen('php://output', 'w');
fputcsv($output, array('field1', 'field2'),';','"');
mysql_connect('localhost', 'usr', 'psswd');
mysql_select_db('db');
$rows = mysql_query('
SELECT
field1,
field2
FROM table
');
while ($row = mysql_fetch_assoc($rows)) fputcsv($output, $row);
mysqli_close($con);
?>

结果是“;”分隔符仅用于 csv 文件的标题,而不是在每一行中。 坦克。

【问题讨论】:

  • 打印行时为什么不使用相同的参数?
  • 您为什么希望 fputcsv 能够“记住”您上次是如何使用它的?您没有在 while() 循环中为 fputcsv 调用指定任何分隔符选项,因此 fputcsv 将使用其默认值。
  • 哇!对不起。没有意识到我的愚蠢错误。

标签: php mysql fputcsv


【解决方案1】:

当您迭代槽行时,您没有设置“方言”(分隔符和附件)。即:';','"' 部分。只需使用:

while ($row = mysql_fetch_assoc($rows)){
    fputcsv($output, $row,';','"');
}

对于这个特殊的用例mysql_fetch_row() 可能更合适(您避免使用基于字符串的索引而只使用数字索引)。

旁注:mysql_ functions family is obsolete,如果可能,请尝试replace it with mysqli_ or PDO

【讨论】:

    猜你喜欢
    • 2011-01-31
    • 2015-11-25
    • 1970-01-01
    • 2014-06-25
    • 2023-03-13
    • 1970-01-01
    • 2018-02-12
    • 2021-03-04
    • 1970-01-01
    相关资源
    最近更新 更多