$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); }