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;
}
这是相关的功能。它运行查询并将结果放入二维数组。将查询更改为仅选择一个没有条件的字段仍会返回两件事。
代码返回正确的数据,只是每条记录重复,即一行8 变成一行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