SQL-запрос успешен, но нет информации

Итак, мой код работает довольно хорошо, все проходит, моя единственная проблема в том, что когда я пытаюсь распечатать неупорядоченный список и его содержимое, я ничего не получаю. Когда я просматриваю свой исходный код <ul> </ul>, Там есть место, так что наверняка что-то происходит.

Это мой код, я его слегка прокомментировал, но то, что происходит, очевидно:

$uname = mysqli_real_escape_string($link, $_SESSION['Username']); //Get username ready
$sql = mysqli_query($link, "SELECT * FROM users WHERE Username = '" . $uname . "'"); //SQL Query result

    if(!$sql)
        {
        echo "Error retrieving User ID. Please try again. MySQL Error: " . mysqli_error($link);
        }
    elseif($row = mysqli_fetch_assoc($sql))
        {
            $uid = $row['UserID']; //Obtain UserID
        }
    else
        {
        echo "Error: " . mysqli_error($link) . "<br />" . $uname . " / " . $sql . " / " . $uid;
        }

    mysqli_free_result($sql);

    $sql = mysqli_query($link, "SELECT * FROM auditions"); //Get everything from the auditions table

    if(!$sql)
        {
        echo "Error retrieving auditions. Please try again later. Error: " . mysqli_error($link);
        }
    elseif($row = mysqli_fetch_assoc($sql))
        {
        if(mysqli_num_rows($sql)==0)
            {
            echo "Sorry, there are currently no open auditions. Please try back at a later date.";
            }
        else
            {
            echo "<ul>";
            while($row = mysqli_fetch_assoc($sql))
                {
                echo "<li><a href='auditions.php?id=" . $row['AudID'] . "'>" . $row['AudName'] . "</a></li>";
                }
            echo "</ul>";
            }
        }
    else
        {
        echo "Error: " . mysqli_error($link);
        }

Куда я иду не так? Единственное, что он не делает, это на самом деле собирает какие-либо результаты, и я поместил некоторые данные в таблицу, чтобы были записи! В противном случае он сказал бы, что их нет. Я перевернул это, так что он показывает сообщение, если нет 0 записей, и это работает. Что я делаю не так, ребята?

Заранее спасибо.

1 ответ

Решение

Вы получаете результат дважды. Вместо этого, только получить результат в while цикл:

<?php
$sql = mysqli_query($link, "SELECT * FROM auditions"); //Get everything from the auditions table

    if(!$sql)
        {
            echo "Error retrieving auditions. Please try again later. Error: " . mysqli_error($link);
        }
        else{
            if(mysqli_num_rows($sql)==0)
            {
                echo "Sorry, there are currently no open auditions. Please try back at a later date.";
            }
            else
            {
                echo "<ul>";
                while($row = mysqli_fetch_assoc($sql))
                {
                    echo "<li><a href='auditions.php?id=" . $row['AudID'] . "'>" . $row['AudName'] . "</a></li>";
                }
                echo "</ul>";
            }
        }

?>

Смотрите эту ссылку для получения дополнительной информации о mysql_fetch_assoc

Другие вопросы по тегам