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-массив. Изменение запроса для выбора только одного поля без условий по-прежнему возвращает две вещи.pdo-> query() возвращает два из каждого результата?
Код возвращает правильные данные, только каждая запись дублируется, т. Е. Строка из восьми превращается в строку 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
Может кто-нибудь объяснить, почему это происходит?
EDIT: Мои извинения. Я заменил пасты встроенным кодом. Должен был подумать об этом.
EDIT EDIT: Решение: Установите режим выборки по умолчанию с помощью PDOStatement :: setAttribute(); по умолчанию используется FETCH_BOTH, что вызывает эту проблему. Я нашел неправильное место для решения.
Docs здесь, для получения дополнительной информации: http://www.php.net/manual/en/pdostatement.fetch.php
Покажите нам код здесь, пожалуйста, не только на скрипке –
Пожалуйста, вставьте свой код непосредственно в вопрос, а не отправляйте его на внешнюю службу, такую как pastebin. Внешний код может уйти в любой момент, и нет контроля над версией, как с вопросами SO. Поэтому будущие читатели, вероятно, не смогут увидеть внешний код, и поэтому этот вопрос будет бесполезным или не имеет большого смысла. ** StackOverflow - это больше о будущих ссылках для других, так как речь идет о том, как вы получили свой вопрос сегодня. ** –
Вы также можете показать нам, что такое эхо-печать. – MatRt