mysqli_fetch_array возвращает только первую строку из таблицы в базе данных

Хочу таблицу из mysql перевести в php массив:

$sql = "SELECT uuid, name, code, sell_price, admission_price, quantity, articleNumber, parentUuid FROM Myshoes";

$mydb = mysqli_query($conn, $sql);  
    $row = $mydb->fetch_array(MYSQLI_ASSOC);
    printf("%s (%s)\n", $row["uuid"], $row["name"]);

возращает первую запись из таблицы Myshoes

сама таблица содержит более 6000 строк и на запрос print_r($mydb) возращает

mysqli_result Object ( [current_field] => 0 [field_count] => 8 [lengths] => [num_rows] => 6212 [type] => 0 )

Через циклы все работает хорошо, но не могу разобраться почему все - таки выводиться одна строка. Может есть какой-то изящный способ решения проблемы


Ответы (1 шт):

Автор решения: Алексей Шиманский

В этом и смысл fetch_array, что метод выбирает следующую строку из набора. И чтобы все строки достать - надо использовать цикл. Метод говорит сам за себя и не ясно почему от него ожидается другое поведение.

Если хочется сразу всё достать скопом, то можно использовать fetch_all


P.S. За раз вытаскивать 6000 записей не очень хорошо. Стоит воспользоваться пагинацией и ограничением выбора записей. через LIMIT. Иначе сервер умрёт и пользователи будут ждать долго.

→ Ссылка