【发布时间】:2014-11-08 20:53:09
【问题描述】:
我的 mysql,我正在尝试从数据库中调用要在选择列表中使用的值。选择有效,但会跳过第一个结果。我知道这是一个相当普遍的问题,但我不认为(至少我看不到在哪里)我重复了 mysqli_fetch_array 的分配,这通常是问题所在,尽管如果发生这种情况,问题与通常情况相同。
$qselectgamename = "SELECT * FROM game ORDER BY GameName asc";
$rselectgamename = mysqli_query($dbc, $qselectgamename);
if(mysqli_num_rows($rselectgamename) !== false){
while($rowselectgamename = mysqli_fetch_array($rselectgamename, MYSQLI_ASSOC)){
echo '<option value="'.$rowselectgamename['GameID'].'">'.$rowselectgamename['GameName'].'</option>';
}
} else {
echo '<option value="0">Please Insert a Game Title first</option>';
}
我正在做的其他事情会导致这个问题吗?
结果为 1,2,0 被驳回,将排序切换到 desc,结果为 1,0,2 被驳回。
编辑:我发现了问题,见下文。
【问题讨论】:
-
我不明白为什么这段代码会这样做。我见过很多类似的问题,他们在循环之前额外致电
mysqli_fetch_array()。你确定你在真实的代码中没有类似的东西吗? -
顺便说一句,
mysqli_num_rows()返回一个数字,而不是NULL。但是0 == NULL这样测试就可以了。 -
确定,按 CTRL+F 并搜索 mysqli_fetch_array($rselect 带回一个结果,即我向您展示的结果。是的,我不止一次使用 mysqli_fetch_array,但只有一次使用 $rowselectgamename . 值得一提的是,我已经在其他地方完成了这种风格的选择/填充,并且效果很好。
-
你的比较真的很奇怪。请将其更改为
if(mysqli_num_rows($rselectgamename) != 0)。您编写它的方式不是反转比较,而是反转行数。 -
<td class="input"><dropdownlabel><select class="roundedcorners" name="GameName" size="1" value="'; if(isset($_POST['GameName'])){ echo $_POST['GameName']; } echo '/>';你在 PHP 之外。除非你有echo '并且没有显示它。