出于某种原因,我在从数据库中检索数据时遇到问题.它不包括列出的第一个项目.
连接:
mysql_select_db($database_my_db, $my_db);
$query_rs_jobboards11 = "SELECT * FROM jobBoardsSpecTypes ORDER BY type";
$rs_jobboards11 = mysql_query($query_rs_jobboards11, $my_db) or die(mysql_error());
$row_rs_jobboards11 = mysql_fetch_assoc($rs_jobboards11);
$totalRows_rs_jobboards11 = mysql_num_rows($rs_jobboards11);
Run Code Online (Sandbox Code Playgroud)
输出:
<form action="" method="get">
<select name="specialty">
<?php do { ?>
<option value="<?php echo $row_rs_cms11['type']; ?>"><?php echo $row_rs_cms11['type']; ?></option>
<?php } while ($row_rs_cms11 = mysql_fetch_assoc($rs_jobboards11)); ?>
</select>
<input type="submit" value="Go" />
</form>
Run Code Online (Sandbox Code Playgroud)
它不断遗漏类型列中的第一个条目.如果我添加更多条目,则会显示之前遗漏的条目,并隐藏新条目.
我究竟做错了什么?数据库对于除此页面之外的所有内容都可以正常工
您已将第一行分配给$row_rs_jobboards11,因此当您$row_rs_cms11 = mysql_fetch_assoc($rs_jobboards11)在do/while循环中调用时,它将从表中的第二行开始.
使用do/while而不是while会没有任何区别,但使用不同的变量名确实有所不同.
更新,解释while,do/while之间的区别,并确保您的变量名称正确.
while循环,有效:
while ($row_rs_cms11 = mysql_fetch_assoc($rs_jobboards11)) {
echo '<tr>';
//stuff here
echo '</tr>';
}
Run Code Online (Sandbox Code Playgroud)
do/while循环,也可以
$row_rs_cms11 = mysql_fetch_assoc($rs_jobboards11);
do {
echo '<tr>';
//stuff here
echo '</tr>';
} while ($row_rs_cms11 = mysql_fetch_assoc($rs_jobboards11));
Run Code Online (Sandbox Code Playgroud)
请注意$ row变量匹配.如果你省去第一个电话,它仍然可以工作,但在输出任何内容之前你会得到一个额外的(空的).如果将变量设置为其他名称(并使用mysql_fetch_*调用),则内部数据库指针将设置为表中的第二行.因此,您错过了表中的第一行,因为它设置为不同的(未使用的)变量.
故事的道德启示:
你可以使用while或do/while循环,你只需要确保它
| 归档时间: |
|
| 查看次数: |
2467 次 |
| 最近记录: |