不理解 PHP 中 fputcsv() 函数的输出

Not understanding the output of fputcsv() function in PHP

我不理解我从这个查询中得到的输出。每列都被复制,所以我没有得到请求的 7 列,而是得到 14 列,每列都在其副本旁边,但没有 header。这是我的代码:

<?php
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=netID2807.csv');

// create a file pointer connected to the output stream, usually downloads
$output = fopen('php://output', 'w');

// output the column headings
fputcsv($output, array('Callsign', 'First Name', 'Last Name', 'Time In', 'Time Out', 'County', 'State'));

// go get the data
require_once "dbConnectDtls.php";  // Access to MySQL

$sql = "SELECT callsign, Fname, Lname, logdate, timeout, county, state 
          FROM NetLog 
         WHERE netID = 2807";

foreach($db_found->query($sql) as $row) {
    fputcsv($output, $row);
}
?>

为什么我的所有列都是重复的,我该如何解决?

您的 fetch 似乎默认检索关联数组和 numeric-indexed 数组,因此它会将两者都输出到文件中。您可以尝试指定仅检索其中之一。我看不到你的数据是如何实际获取的,它必须在你的包含文件中。

如果您使用的是 mysqli,fetch_array() 默认为 MYSQLI_BOTH,这将按照您的评论建议进行。相反,在检索数据时指定 MYSQLI_ASSOCMYSQLI_NUM