缺少SELECT语句的第一行

时间:2016-10-17 09:24:02

标签: php mysql

我有一个名为' Modules'我试图从该表中选择所有行并将其显示在表中。每行都有一个名为MOrder的列,其范围为1 - 有多少模块可用。

这是我的代码:     

    $sql_query = "SELECT * FROM Modules WHERE CourseID = ". $CourseID ." ORDER BY MOrder ASC";
    $result = mysqli_query($dbconfig, $sql_query);
    $row = mysqli_fetch_array($result, MYSQLI_ASSOC);
    $count = mysqli_num_rows($result);

    echo '<div class="row">';
        echo '<div class="col-md-12">';
            echo '<table class="table">';
            if($count > 0) {
                $_SESSION['countMOrder'] = $count;

                echo '<tr>';
                    echo '<th>Module Title</th> ';
                    echo '<th></th>';
                echo '</tr>';
                while ($row = mysqli_fetch_array($result)) {
                    echo '<tr>';
                        echo '<td>'. $row['Title'] .'</td> ';
                        echo '<td><a href="user-view-module-revised.php?CourseID='. $row['CourseID'] .'&ModuleID='. $row['ID'] .'&MOrder='. $row['MOrder'] .'" title="Take Module" class="btn btn-success" id="'. $row['MOrder'] .'">Take Module</a></td>';
                    echo '</tr>';
                }
            }
            echo '</table>';
        echo '</div>';
    echo '</div>';
?>

但是,无论出于何种原因,MOrder 1的模块都缺少该语句,并始终以2开头?

为什么会这样?

4 个答案:

答案 0 :(得分:1)

您正在粘贴代码的第三行调用$row = mysqli_fetch_array($result, MYSQLI_ASSOC);,这会从结果中提取第一个数组。

然后在while循环中覆盖它:

while ($row = mysqli_fetch_array($result)) { // <-- overwritten here with item 2
    //...
}

答案 1 :(得分:0)

因为在你的代码的第3行你打电话

$row = mysqli_fetch_array($result, MYSQLI_ASSOC);

一次,然后在循环中开始调用

$row = mysqli_fetch_array($result)
再次

,从而用第二行覆盖$ row变量。摆脱第一个$row = mysqli_fetch_array($result)行。

答案 2 :(得分:0)

试试这段代码。

$sql_query = "SELECT * FROM Modules WHERE CourseID = ". $CourseID ." ORDER BY MOrder ASC";
    $result = mysqli_query($dbconfig, $sql_query);
    $count = mysqli_num_rows($result);

    echo '<div class="row">';
        echo '<div class="col-md-12">';
            echo '<table class="table">';
            if($count > 0) {
                $_SESSION['countMOrder'] = $count;

                echo '<tr>';
                    echo '<th>Module Title</th> ';
                    echo '<th></th>';
                echo '</tr>';
                while ($row = mysqli_fetch_array($result)) { //for every fetch we'll get one row.
                    echo '<tr>';
                        echo '<td>'. $row['Title'] .'</td> ';
                        echo '<td><a href="user-view-module-revised.php?CourseID='. $row['CourseID'] .'&ModuleID='. $row['ID'] .'&MOrder='. $row['MOrder'] .'" title="Take Module" class="btn btn-success" id="'. $row['MOrder'] .'">Take Module</a></td>';
                    echo '</tr>';
                }
            }
            echo '</table>';
        echo '</div>';
    echo '</div>';

答案 3 :(得分:0)

开始时,您将获取第一行。

$row = mysqli_fetch_array($result, MYSQLI_ASSOC);

在while循环中,fetch函数返回第二行。