cPanel环境下MySQL与PHP连接及搜索功能故障求助
问题排查与解决方案
先直接点明核心问题,按优先级逐一解决:
1. HTML表单提交按钮无效
你用<a>标签作为提交按钮是错误的——<a>默认是超链接跳转逻辑,不会触发表单的POST提交。这直接导致PHP里的isset($_POST['submit'])永远为false,查询逻辑根本没执行。
修正后的HTML表单:
<!--SEARCH BOX--> <div class="search-box"> <form method="POST"> <input class="search-txt" type="TEXT" name="search" placeholder="SEARCH CAREERS"> <!-- 把a标签换成标准的button提交按钮,样式可通过CSS调整 --> <button class="search-btn" type="SUBMIT" name="submit"> <i class="fa fa-search" aria-hidden="true"></i> </button> </form> </div>
2. PHP变量名不匹配
你把查询结果存在了$result变量里,但后续判断行数、遍历结果时用的是$resultSet,变量名完全不对应,PHP会触发未定义变量错误(若开启错误提示可见),直接跳过结果处理逻辑。
3. SQL字段名带空格需转义
你的表字段(如Job Title、Job Description)包含空格,在SQL语句中必须用反引号`包裹,否则MySQL会将Job识别为字段名,Title视为无效语法,导致查询失败。
4. 缺少数据库连接错误处理
没有判断数据库是否连接成功,万一连接出问题无法及时排查,建议补充连接错误判断逻辑。
修正后的PHP代码:
<?php $output = NULL; // 开发阶段开启错误提示,方便排查问题 error_reporting(E_ALL); ini_set('display_errors', 1); if(isset($_POST['submit'])){ // 连接数据库 $mysqli = new mysqli("localhost", "jj3wg2td_wix", "Sebastian!16", "jj3wg2td_careerslist"); // 新增:检查连接是否成功 if ($mysqli->connect_error) { die("数据库连接失败: " . $mysqli->connect_error); } $search = $mysqli->real_escape_string($_POST['search']); // 修正:字段名加反引号,避免空格导致SQL语法错误 $result = $mysqli->query("SELECT * FROM careers WHERE `Job Title` LIKE '%$search%'"); // 修正:使用正确的变量名$result if($result->num_rows > 0){ while($rows = $result->fetch_assoc()) { $jobTitle = $rows['Job Title']; $jobDesription = $rows['Job Description']; $salaryLow = $rows['Salary Low']; $salaryHigh = $rows['Salary High']; $output .= "Job Title:$jobTitle<br /> Job Description:$jobDesription<br /> Salary Low:$salaryLow<br /> Salary High:$salaryHigh<br /> <br />"; } } else { $output = "No results"; } // 关闭数据库连接 $mysqli->close(); } ?>
额外说明
关于数据库主机的问题:cPanel环境下,MySQL主机通常就是localhost(默认端口3306可省略),因为数据库与网站部署在同一服务器上,这个不是导致问题的原因,核心还是前面的代码错误。
内容的提问来源于stack exchange,提问作者wix
相关产品推荐
相关产品推荐

