gpt4 book ai didi

php - 为什么 MySQL 在从数据库中检索时会遗漏第一行?

转载 作者:行者123 更新时间:2023-11-29 03:49:36 25 4
gpt4 key购买 nike

出于某种原因,我在从数据库中检索数据时遇到问题。它省略了列出的第一项。

连接:

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);

输出:

 <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>

它总是遗漏类型列中的第一个条目。如果我添加更多条目,则会显示之前遗漏的条目,并隐藏新条目。

我做错了什么?该数据库对除此页面以外的所有内容都可以正常工作。

最佳答案

您已经将第一行分配给 $row_rs_jobboards11,因此当您在 do/while 循环中调用 $row_rs_cms11 = mysql_fetch_assoc($rs_jobboards11) 时,它从表中的第二行。

使用 do/while 而不是 while 没有任何区别,但使用不同的变量名确实有区别。

更新,解释 while、do/while 之间的区别,并确保您的变量名称正确。

While 循环,有效:

while ($row_rs_cms11 = mysql_fetch_assoc($rs_jobboards11)) {
echo '<tr>';
//stuff here
echo '</tr>';
}

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));

请注意 $row 变量匹配。如果您省略第一个调用,它仍然可以工作,但在输出任何内容之前您会得到一个额外的(空的)。如果将变量设置为不同的名称(并使用 mysql_fetch_* 调用),内部数据库指针将设置为表中的第二行。因此,您会错过表中的第一行,因为它被设置为不同的(未使用的)变量。

故事的寓意:

您可以使用 while 或 do/while 循环,您只需确保

  • 如果您正在使用 do/while,则必须在进入循环之前创建行变量。并且,
  • 确保您的变量名称匹配!

关于php - 为什么 MySQL 在从数据库中检索时会遗漏第一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1428982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com