1

好的,这是我的代码:

$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 循环之后的代码也没有被执行。

4

4 回答 4

1

不要or die(mysql_error())在while测试中做这部分......之前做。

if($sdataset==false) {
    die(mysql_error());
}
while($srow=mysql_fetch_array($sdataset)) {
    $select_status .= "<option value='".$srow['name']."'".">".$srow['name']."</option>\n";
} // end while loop
于 2012-08-02T02:59:28.623 回答
1

or die()您读取结果集的末尾时,您的 while() 循环实际上会终止脚本。mysql_fetch 将返回 false,触发or die().

虽然在查询中检查错误很有用,但在获取部分你不能这样做,因为你会得到这样的误报。

于 2012-08-02T03:09:08.850 回答
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。

于 2012-08-02T03:15:47.733 回答
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,再试一次

于 2012-08-02T03:22:52.023 回答