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

从数据库取值并输出时页面返回404错误,该如何解决?

解决PHP数据库查询时返回404错误的问题

我来帮你排查这个问题——虽然404通常是页面不存在的错误,但结合你的代码来看,大概率是代码逻辑或执行过程中触发了服务器异常,导致页面无法正常返回,下面一步步分析解决:

  • 先确认页面路径是否正确
    404最直接的原因是你访问的URL对应的PHP文件不存在,或者路径写错了。先检查:

    • 你输入的访问URL(比如http://你的域名/xxx.php)和服务器上的实际文件路径完全匹配
    • 文件名大小写是否正确(Linux服务器严格区分大小写,Windows不区分)
  • 修复数据库结果的错误处理
    你的代码里直接echo了查询返回的mysqli_result对象,这是错误的!$mysqli->query()返回的是结果集对象,不是直接的字段值,直接输出会触发异常,部分服务器配置下会因此返回404。正确的写法是取出结果里的字段:

    <?php
    // 先检查数据库连接是否成功
    $mysqli222 = mysqli_connect('HIDDEN', 'HIDDEN', 'HIDDEN', 'HIDDEN');
    if (!$mysqli222) {
        die("数据库连接失败: " . mysqli_connect_error());
    }
    
    // 确保$MyValue1已定义(比如来自GET参数)
    $MyValue1 = $_GET['urlcode'] ?? '';
    
    // 先修正结果处理逻辑,后续建议用预处理语句避免注入
    $result2222 = $mysqli222->query("SELECT HIDDEN1 FROM HIDDEN2 WHERE urlcode = '$MyValue1'");
    if($result2222->num_rows == 0) {
        echo 'ERROR!';
    } else {
        // 从结果集中取出一行数据
        $row = $result2222->fetch_assoc();
        // 输出目标字段值
        echo $row['HIDDEN1'];
    }
    
    // 释放结果集并关闭连接
    $result2222->free();
    $mysqli222->close();
    ?>
    
  • 排查变量未定义与SQL注入风险
    你的代码里用到了$MyValue1但没看到定义,如果这个变量未赋值,会触发PHP警告,部分服务器会隐藏错误并返回404。另外直接拼接变量到SQL语句里有严重的SQL注入风险,建议改用预处理语句:

    // 预处理语句示例(更安全)
    $stmt = $mysqli222->prepare("SELECT HIDDEN1 FROM HIDDEN2 WHERE urlcode = ?");
    $stmt->bind_param("s", $MyValue1); // "s"表示参数为字符串类型
    $stmt->execute();
    $result = $stmt->get_result();
    
    if($result->num_rows == 0) {
        echo 'ERROR!';
    } else {
        $row = $result->fetch_assoc();
        echo $row['HIDDEN1'];
    }
    $stmt->close();
    
  • 查看服务器错误日志
    如果以上步骤都没解决,去查看服务器的PHP错误日志或Apache/Nginx的访问日志,日志里会记录具体的错误原因(比如数据库连接失败、语法错误等),这是排查这类问题最有效的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:28:29