Intereting Posts
MySQL после обновления и после запуска Триггеры сбой при вводе строки Разбор плохо форматированного HTML в PHP Войти на другой сайт с помощью Curl в php Страница статьи Joomla: код для проверки опубликован или нет Цвет в выпадающем списке продуктов Backorder, основанный на запасе в WooCommerce Обновите или создайте постоянный токен доступа к Facebook, чтобы опубликовать страницу приложения Всегда ли определена переменная сервера HTTP_HOST? Ссылка на статический метод в PHP? Как определить, включен ли файл или запущен ли он напрямую PHP и чувствительность к регистру Алгоритм поиска * в PHP Как установить UTF-8 в конструкторе класса PDO для базы данных PHP PgSQL PHP 7 – mcrypt устарела, нужна альтернатива WordPress – Получить количество сообщений и комментариев по дням как остановить множественный вход пользователя с тем же адресом электронной почты и паролем, как только пользователь уже зарегистрировался

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 

Может ли кто-нибудь объяснить, почему это происходит?

EDIT: Мои извинения. Я заменил пасты встроенным кодом. Должен был подумать об этом.

EDIT EDIT: Решение: установите режим выборки по умолчанию с помощью PDOStatement :: setAttribute (); по умолчанию используется FETCH_BOTH, что вызывает эту проблему. Я нашел неправильное место для решения.
Документы здесь, для получения дополнительной информации: http://www.php.net/manual/en/pdostatement.fetch.php

«По умолчанию PDO будет получать массив результатов, индексированных по имени столбца и номерам столбцов (т. Е. Значения из БД отображаются в массиве дважды, с двумя разными ключами). Поэтому, если вы используете режим выборки по умолчанию, вы, вероятно, будете ездить на велосипеде через оба из представлений набора результатов. ' Спасибо, Лив, это объяснение помогает.

Решение. Установите режим выборки по умолчанию с помощью PDOStatement :: setAttribute (); по умолчанию используется FETCH_BOTH, что вызывает эту проблему. Я нашел неправильное место для решения. Документы здесь, для получения дополнительной информации: http://www.php.net/manual/en/pdostatement.fetch.php