好的,这是我的代码:
$select_status = 0;
$select_status = "<select name='status'>\n";
$select_status .= "<option value=''>SELECT ONE</option>\n";
$sdataset = mysql_query("SELECT id, name FROM phponly_category") or die(mysql_error());
while($srow=mysql_fetch_assoc($sdataset)) {
echo implode(", ", $srow);
echo "<br />";
$select_status .= "<option value='".$srow['name']."'";
$select_status .= ">".$srow['name']."</option>\n";
} // end while loop
echo "out of the loop";
$select_status .= "</select>\n";
// now insert the <select> list control into the page
echo $select_status;
代码工作正常,直到它破坏的最后一行。我无法打印 echo $ select_status 。 我试图通过打印每一行来查看SQL查询结果发生了什么但是一切看起来都很好。出于某种原因,在最后一行 while循环中断,甚至 while循环之后的代码也没有被执行。
答案 0 :(得分:1)
当您读取结果集的末尾时,while()循环上的or die()
实际上将终止该脚本。 mysql_fetch将返回false,触发or die()
。
虽然在查询时检查错误是好的,但你不能在提取部分这样做,因为你会得到这样的误报。
答案 1 :(得分:0)
使用mysql_fetch_assoc
,以便您可以使用字段名称作为密钥来获取数据。
<?php
$conn = mysql_connect('localhost', 'username', 'password');
mysql_select_db('test');
$select_status = "<select name='status'>\n";
$select_status .= "<option value=''>SELECT ONE</option>\n";
$sdataset = mysql_query("SELECT id, name FROM phponly_category") or die(mysql_error());
while($srow=mysql_fetch_assoc($sdataset)) {
$select_status .= "<option value='".$srow['name']."'".">".$srow['name']."</option>\n";
} // end while loop
$select_status .= "</select>\n";
echo $select_status;
?>
注意:不鼓励使用此扩展程序。看看mysqli或PDO。
答案 2 :(得分:0)
我个人不喜欢回复html代码,如果你的目标是验证查询是否有结果,你可以做这样的事情
<?php
$sdataset = mysql_query("SELECT id, name FROM phponly_category");
if (mysql_num_rows($sdataset) > 0) {
?>
<select name='status'>
<option value=''>SELECT ONE</option>
<?php
while($srow = mysql_fetch_array($sdataset)) {
?>
<option value='<?php echo $srow['name'] ?>'><?php echo $srow['name'] ?></option>
<?php } // end while loop ?>
</select>
<?php
} // end of if
else {
// Whatever you wanna put here
}
?>
编辑:mysql_num_rows
有一个拼写错误,再试一次