【发布时间】:2016-10-17 09:24:01
【问题描述】:
我有一个名为“模块”的数据库表,我正在尝试从该表中选择所有行并将它们显示在一个表中。每行都有一个名为 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 开头?
这是为什么?
【问题讨论】:
-
mysqli_fetch_array按顺序返回行。您在查询后立即调用它,因此您的 while 循环将看到的第一行是第 2 行。 -
只删除第三行代码
$row = mysqli_fetch_array($result, MYSQLI_ASSOC); -
去掉这行
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);,应该没问题!