Выбор и отображение данных из последних 5 записей в таблице

Итак, после поиска в течение некоторого времени здесь, в stack overflow, я нашел способ сделать это:`

$sql = "SELECT username FROM (SELECT * FROM users ORDER BY id DESC LIMIT 5) sub ORDER BY id DESC";

    $result = mysqli_query($conn, $sql);

    $row = mysqli_fetch_assoc($result);

    echo $row[0];`

Однако, когда я повторяю $row[0], чтобы получить первую запись, она ничего не отображает. Я проверил свое соединение с базой данных и использовал запрос на phpmyAdmin, и он работал хорошо, не уверен, почему он не отображает данные (есть также пользователь в таблице с идентификатором 1).

1 ответ

  1. mysqli_fetch_assoc возвращает ассоциативный массив, а не нумерованный массив. Таким образом, индекс каждого столбца в результате — это имя столбца, $row['username'].

    Если вы хотите все 5 имен пользователей, вам нужно вызвать его в цикле. Каждый вызов возвращает только одну строку результатов, а не все сразу.

    while ($row = mysqli_fetch_assoc($result)) {
        echo $row['username'] . '<br>';
    }
    

    Для получения нумерованного массива используется mysqli_fetch_row(). Вам все еще нужна петля, чтобы получить все из них.

    while ($row = mysqli_fetch_row($result)) {
        echo $row[0] . '<br>';
    }