mat*_*att 3 php sql sqlite pdo
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;
}
Run Code Online (Sandbox Code Playgroud)
这是相关的功能.它运行查询并将结果放入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
Run Code Online (Sandbox Code Playgroud)
SQLite3的:
51 27 836 435 1102 245 88 1293
33 30 401 3489 415 3475 4722 2655
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么会这样吗?
编辑:道歉.我用嵌入式代码替换了贴纸.应该想到这样做.
编辑编辑:解决方案:使用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
| 归档时间: |
|
| 查看次数: |
1937 次 |
| 最近记录: |