Intereting Posts
Рекомендации PHP: Im загружает массив $ GLOBALS с большим количеством информации, которая будет использоваться между моими php-страницами Значения по умолчанию для ящика выбора symfony2 Аргументы Escape для операторов PDO? Является ли FILTER_VALIDATE_URL слишком строгим? Бесплатные удаленные серверы smtp? Ошибка 404 при получении POST Ошибка: mysqlnd не может подключиться к MySQL 4.1+, используя старую небезопасную аутентификацию PHP двойной цикл while, второй цикл не повторяется более одного раза preg_match () Неизвестный модификатор '[' help что такое нотация «::» в php? SQL объединяет результаты в объект в codeigniter Подтвердить номер мобильного телефона в формате php Нужно ли мне соединение php mysql в каждой функции, использующей базу данных? Будет ли Nginx в качестве обратного прокси для справки Apache только для динамического контента Как я могу сделать что-то вроде этого – цикл через неопределенный набор чисел

mysql_fetch_array не извлекает все строки

$query = "SELECT * FROM table"; $result = mysql_query($query, $db); $all = mysql_fetch_assoc($result); echo mysql_num_rows($result) . ":" . count($all); 

Это возвращает

 2063:7 

Я раньше не использовал count, поэтому я не уверен на 100%, что он не учитывает столбцы таблицы. Уже поздно, и я могу сходить с ума.

Вот еще один пример того, что происходит:

 $result = mysql_query($query, $db); echo "Rows: " . mysql_num_rows($result) . " <BR />"; $player_array = mysql_fetch_assoc($result); echo "<pre>"; print_r($player_array); echo "</pre>"; 

Какие результаты:

 Rows: 9 Array ( [playerID] => 10000030 ) 

TL; DR: Я отправляю запросы, которые возвращают несколько строк, но fetch_array дает только небольшую часть этих строк в результирующем массиве.

mysql_fetch_assoc возвращает только одну строку, когда вам нужно использовать цикл для извлечения всех строк

 while($row = mysql_fetch_assoc($result)) { print_r($row); } 

Каждый вызов mysql_fetch_assoc($result); дает вам одну строку набора результатов:

( из документации )

mysql_fetch_assoc – Получить строку результата как ассоциативный массив

Возвращает ассоциативный массив, соответствующий выбранной строке, и перемещает указатель внутренней информации вперед. mysql_fetch_assoc () эквивалентен вызову mysql_fetch_array () с MYSQL_ASSOC для необязательного второго параметра. Он возвращает только ассоциативный массив.

Вы должны использовать функцию в цикле:

 $all = array(); while(($row = mysql_fetch_assoc($result))) { $all[] = $row; } 

Пример в документе показывает, как это делается .

mysql_fetch_assoc не работает таким образом, вам нужно вызвать его несколько раз, чтобы получить все строки. Как это:

 while ($row = mysql_fetch_assoc($db_result)) { print_r($row); }