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
相关产品推荐
相关产品推荐

