微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐