【问题标题】:Putting an array in to a CSV using fputcsv使用 fputcsv 将数组放入 CSV
【发布时间】:2015-01-21 10:55:09
【问题描述】:

我的表中有很多字段,我已对其进行序列化以减少字段数量。对于在存储数据时以及在需要时可以完美运行的其他所有内容,我可以使用以下示例:

$dateofbirth = unserialize($row['dateofbirth']);
$dobday = $dateofbirth[0];
$dobmonth = $dateofbirth[1];
$dobyear = $dateofbirth[2];

出生日期存储为dd,mm,yyyy,其他一切我都可以称之为。我现在的问题是我正在尝试使用 fputcsv 创建一个 CSV 文件,使用以下内容:

$result = mysqli_query($con, 'SELECT u.user_id, b.dateofbirth FROM Users u INNER JOIN Basic b USING (user_id) ORDER BY user_id DESC');

$fp = fopen('latest.csv', 'w');

fputcsv($fp, array('User ID', 'DOB' )); 

CSV 生成,但对于 CSV 中的出生日期列,它输出为 "*a:3:{i:0;s:2:"03";i:1;s:2:"02";i:2;s:4:"1986";}*",因为它显然仍然是序列化的。处理这些字段的最佳或最简单的方法是什么?

提前非常感谢。

【问题讨论】:

  • @SunilPachlangia 根据我对这个问题的理解,他们在 1 列中包含所有值。我有多个列,其中一些是数组,其中一些不是。

标签: php mysql fputcsv


【解决方案1】:

你可以试试这个:

header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=latest.csv");// Disable caching
header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1
header("Pragma: no-cache"); // HTTP 1.0
header("Expires: 0"); // Proxies

$fp = fopen('latest.csv', 'w');

while($row = mysqli_fetch_array($result)){

fputcsv($fp,array($row[0],$row[1]));
}

//或者你可以使用上面提到的out headers

或为出生日期设置一些格式,例如:

$rowdob = date("M d, Y - g:i:s A", strtotime( $row[0] ) );

在while循环中将$rowdob传入fputcsv();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    • 2012-08-13
    • 1970-01-01
    相关资源
    最近更新 更多