You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将数据库值存入下拉列表时页面冻结无报错问题求助

问题诊断与修复方案

先揪出你代码里的核心错误——你调用mysql_num_rows()时传错参数了!你写的是mysql_num_rows($query),但这个函数需要传入查询返回的结果集(也就是mysql_query()得到的$result),而不是SQL字符串本身。

这个错误会让mysql_num_rows()返回false,你的if条件false>0永远不成立,循环代码根本不会执行。但页面冻结的问题,大概率是因为你没正确处理数据库连接,或者mysql_query()执行失败后没有错误捕获,导致PHP进程卡住(比如数据库连接超时却没设置超时机制)。

另外还有几个必须注意的点:

  • 你现在用的mysql_*系列函数已经被PHP彻底废弃了,不仅不安全,新版本PHP里直接没法运行,建议尽快切换到mysqli或者PDO。
  • 你的<option>的value写死成了owner1,这明显是失误吧?应该用数据库里的对应值,比如$row['benutzername']或者用户ID。

给你两种修复方案,先给临时过渡的mysql版本,再推荐更安全的mysqli版本:

修复后的mysql版本(仅临时过渡使用)

<div class="input-field col-md-12">
<?php
// 先确保你已经完成数据库连接,示例:
// mysql_connect('localhost', '你的用户名', '你的密码');
// mysql_select_db('你的数据库名');

echo "<select name='pcID'>";
$query = "SELECT benutzername FROM benutzer";
$result = mysql_query($query);
// 修正参数,同时先判断$result是否有效
if($result && mysql_num_rows($result) > 0){
    while($row = mysql_fetch_array($result)){
        // 把value改成数据库中的实际值,而非固定的owner1
        $username = htmlspecialchars($row['benutzername']);
        echo "<option value=\"$username\">$username</option>";
    }
} else {
    // 增加默认提示选项
    echo "<option value=''>暂无可用用户</option>";
}
echo "</select>";
?>
</div>

推荐的mysqli版本(更安全、更适配现代PHP)

<div class="input-field col-md-12">
<?php
// 建立mysqli数据库连接
$conn = mysqli_connect('localhost', '你的用户名', '你的密码', '你的数据库名');
if(!$conn){
    die("数据库连接失败: " . mysqli_connect_error());
}

echo "<select name='pcID'>";
$query = "SELECT benutzername FROM benutzer";
$result = mysqli_query($conn, $query);
if($result && mysqli_num_rows($result) > 0){
    while($row = mysqli_fetch_assoc($result)){
        // 用htmlspecialchars转义输出,防止XSS攻击
        $username = htmlspecialchars($row['benutzername']);
        echo "<option value=\"$username\">$username</option>";
    }
} else {
    echo "<option value=''>暂无可用用户</option>";
}
// 释放结果集并关闭连接
mysqli_free_result($result);
mysqli_close($conn);
echo "</select>";
?>
</div>

额外小建议:

  • 开启PHP错误提示能快速定位问题,在代码开头加error_reporting(E_ALL); ini_set('display_errors', 1);就行。
  • 永远不要直接输出数据库里的内容,用htmlspecialchars()转义,避免XSS攻击。

内容的提问来源于stack exchange,提问作者CallMeLeonardo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:54:02