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 举报,一经查实,本站将立刻删除。