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

相关文章

SQLite架构简单,又有Json计算能力,有时会承担Json文件/RES...
使用Python操作内置数据库SQLite以及MySQL数据库。
破解微信数据库密码,用python导出微信聊天记录
(Unity)SQLite 是一个软件库,实现了自给自足的、无服务器...
安卓开发,利用SQLite实现登陆注册功能