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

PHP7+MySQL环境下数据库搜索触发HTTP 500错误求助

解决HTTP 500错误的步骤及代码修复

HTTP 500错误通常是PHP语法错误或运行时逻辑错误导致的,我帮你梳理几个关键修复点,一步步解决问题:


第一步:开启PHP错误显示(快速定位问题)

默认情况下PHP可能隐藏错误详情,先在search.inc.php最顶部添加以下代码,让错误信息直接显示出来,方便精准排查:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
?>

第二步:修复代码中的语法与逻辑错误

你的search.inc.php里有好几处明显的错误,我逐个拆解:

1. 未闭合的echo语句

这行代码的引号没闭合,直接触发语法错误:

<?php echo "<h2>Search Results</h2> if(isset($_POST['search'])) {

修正为:

<?php echo "<h2>Search Results</h2>";
if(isset($_POST['search'])) {

2. mysqli_query调用参数缺失+SQL变量未正确引用

mysqli_query()必须传入数据库连接对象$conn作为第一个参数,而且你写的SQL里把变量$search当成了字符串字面量,没有正确解析:
错误代码:

$result = mysqli_query("SELECT * FROM chrome WHERE Teacher LIKE '%search%'");

修正后(同时补上连接对象和变量解析):

$sql = "SELECT * FROM chrome WHERE Teacher LIKE '%$search%'";
$result = mysqli_query($conn, $sql);

⚠️ 额外提醒:直接拼接变量到SQL里存在SQL注入风险,后面会给你更安全的预处理语句写法。

3. 未闭合的a标签

提示链接的HTML标签没写完,导致语法错误:
错误代码:

echo "<p>You Didn't Submit Data! Try Again!</p><a href=\"myurlusuallyisherebutitsforaimportantthingandidontwantusersgoingtoit\"</a>";

修正为(补充闭合符号和链接文本):

echo "<p>You Didn't Submit Data! Try Again!</p><a href=\"myurlusuallyisherebutitsforaimportantthingandidontwantusersgoingtoit\">返回重新搜索</a>";

4. 缺失代码块闭合符号

你的代码最后没有用}闭合if(isset($_POST['search']))的代码块,这也是语法错误的来源之一。


第三步:完整修正后的代码

这里是修复所有问题后的search.inc.php,还加入了更安全的预处理语句(避免SQL注入)和XSS防护:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
require "dbh.inc.php";
?>
<!DOCTYPE html>
<html>
<head>
<title>Searching For Data</title>
<style>
.table { border-collapse: collapse; margin-top: 15px; }
.table th, .table td { padding: 8px; text-align: left; border: 1px solid #ddd; }
.table th { background-color: #f5f5f5; }
</style>
</head>
<body>
<?php 
echo "<h2>Search Results</h2>";
if(isset($_POST['search'])) { 
    $search = $_POST['search']; 
    if (empty($search)) { 
        echo "<p>You Didn't Submit Data! Try Again!</p><a href=\"myurlusuallyisherebutitsforaimportantthingandidontwantusersgoingtoit\">返回重新搜索</a>"; 
        exit; 
    } 
    $search = strtoupper($search); 
    $search = strip_tags($search); 
    $search = trim($search); 

    // 安全的预处理语句,避免SQL注入
    $sql = "SELECT RoomNum, Teacher, FrontId, Barcode FROM chrome WHERE Teacher LIKE ?";
    $stmt = mysqli_prepare($conn, $sql);
    $likeSearch = "%$search%";
    mysqli_stmt_bind_param($stmt, "s", $likeSearch);
    mysqli_stmt_execute($stmt);
    $result = mysqli_stmt_get_result($stmt);

    echo "<table class=\"table\">
    <tr>
    <th>Room Number</th>
    <th>Teacher</th>
    <th>Front Barcode</th>
    <th>Back Barcode</th>
    </tr>"; 
    while($row = mysqli_fetch_array($result)) { 
        echo "<tr>"; 
        echo "<td>" . htmlspecialchars($row['RoomNum']) . "</td>"; 
        echo "<td>" . htmlspecialchars($row['Teacher']) . "</td>"; 
        echo "<td>" . htmlspecialchars($row['FrontId']) . "</td>"; 
        echo "<td>" . htmlspecialchars($row['Barcode']) . "</td>"; 
        echo "</tr>"; 
    } 
    echo "</table>"; 
    mysqli_stmt_close($stmt);
    mysqli_close($conn); 
}
?>
</body>
</html>

第四步:验证数据库配置与表结构

最后确认一下:数据库chromebook存在,chrome表的字段RoomNum、Teacher、FrontId、Barcode拼写完全正确,没有大小写或拼写错误。

按照上面的步骤修改后,HTTP 500错误应该就能解决,页面会正常加载搜索结果啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:27:47