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

不理解PHP中fputcsv()函数的输出,php,fputcsv,Php,Fputcsv,我不理解从这个查询中得到的输出。每一列都被复制,所以我没有得到请求的7列,而是得到14列,每个列都在它的副本旁边,但没有标题。这是我的密码: <?php header('Content-Type: text/csv; charset=utf-8'); header('Content-Disposition: attachment; filename=netID2807.csv'); // create a file pointer connected to the output stre

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

<?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);
}
?>


为什么我的所有列都被复制,我该如何修复它?

看起来您的提取默认检索关联数组和数字索引数组,因此它将两者都输出到文件中。您可以尝试指定仅检索其中一个。我看不出您的数据实际上是如何获取的,它必须在您的include文件中


如果您使用的是mysqli,
fetch\u array()
默认设置为
mysqli\u-BOTH
,这将按照您的评论执行。取而代之的是,在检索数据时指定
MYSQLI_ASSOC
MYSQLI_NUM

看起来您的提取默认同时检索关联数组和数字索引数组,因此它会将两者都输出到文件中。您可以尝试指定仅检索其中一个。我看不出您的数据实际上是如何获取的,它必须在您的include文件中


如果您使用的是mysqli,
fetch\u array()
默认设置为
mysqli\u-BOTH
,这将按照您的评论执行。取而代之的是,在检索数据时指定
MYSQLI\u ASSOC
MYSQLI\u NUM

尝试
print\r($row)查看您正在返回的数据。我正在返回reach行的一个列表,这是我所期望的。以此为例,;数组([callsign]=>AD0TU[0]=>AD0TU[Fname]=>Craig[1]=>Craig[Lname]=>Myers[2]=>Myers[logdate]=>2020-09-03 15:09:43[3]=>2020-09-03 15:09:43[timeout]=>2020-09-03 15:56:44[4]=>2020-09-03 15:56:44[郡]=>利文斯顿[5]=>利文斯顿[州]=>MO[6]=>尝试打印($row)查看您正在返回的数据。我正在返回reach行的一个列表,这是我所期望的。以此为例,;数组([callsign]=>AD0TU[0]=>AD0TU[Fname]=>Craig[1]=>Craig[Lname]=>Myers[2]=>Myers[logdate]=>2020-09-03 15:09:43[3]=>2020-09-03 15:09:43[timeout]=>2020-09-03 15:56:44[4]=>2020-09-03 15:56:44[郡]=>利文斯顿[5]=>利文斯顿[州]=>MO[6]=>我的include文件几乎是一个标准的PDO凭证文件。我在整个相当大的应用程序中都使用它。为了理解您所说的内容,我在代码中添加了这个(以及其他一些东西),现在它可以工作了$行=$statement->fetchAll(PDO::FETCH_ASSOC);我的include文件几乎是一个标准的PDO凭证文件。我在整个相当大的应用程序中都使用它。为了理解您所说的内容,我在代码中添加了这个(以及其他一些东西),现在它可以工作了$行=$statement->fetchAll(PDO::FETCH_ASSOC);