php – pdo-> query()返回两个结果?

function readDB($db,$event)
{
    try {
        $rows = array();
        $sql = "SELECT \"Red score\", \"Blue score\", red1, red2, red3, blu1, blu2, blu3 FROM Matches WHERE Event='$event' AND Type='Q' ORDER BY Number;";
        foreach($db->query($sql) as $row)
        {
            $rows[] = $row;
            echo count($row) . "<br/>";
        }
        printArray($rows);
    } catch(PDOException $e) {
        $rows = 'aids';
        echo $e->getMessage();
    }

    $db = null;
}

这是相关的功能.它运行查询并将结果放入2D数组中.更改查询以仅选择一个没有条件的字段仍会返回两件事.

代码返回正确的数据,只是每个记录都是重复的,即一行八行变成16行.在sqlite3控制台中运行时的查询返回一次.
样品:
PHP

51    51    27    27    836    836    435    435    1102    1102    245    245    88    88    1293    1293  
33    33    30    30    401    401    3489   3489   415     415     3475   3475   4722  4722  2655    2655  

sqlite3的:

51    27    836    435    1102    245    88    1293  
33    30    401    3489   415     3475   4722  2655  

任何人都可以解释为什么会这样吗?

编辑:道歉.我用嵌入式代码替换了贴纸.应该想到这样做.

编辑编辑:解决方案:使用PDOStatement :: setAttribute()设置提取模式;它认为FETCH_BOTH导致此问题.我找错了地方寻求解决方案.
文档在这里,更多信息:http://www.php.net/manual/en/pdostatement.fetch.php

解决方法:

认情况下,PDO将获取由列名和列号索引的结果数组(即,数据库中的值出现在数组中两次,具有两个不同的键).因此,如果您正在使用认的提取模式,那么您可能会循环浏览结果集的两个表示形式.谢谢Liv,这个解释很有帮助.

解决方案:使用PDOStatement :: setAttribute()设置提取模式;它认为FETCH_BOTH导致此问题.我找错了地方寻求解决方案.
文档在这里,更多信息:http://www.php.net/manual/en/pdostatement.fetch.php

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...