表单提交后返回空白页且未写入数据库,求技术排查帮助
解决表单数据无法写入数据库的问题
你的代码里有几个关键问题导致了空白页面和数据插入失败,我帮你逐一梳理并修正:
1. 数据库连接未指定目标库
你创建mysqli连接时漏传了数据库名参数,导致连接后没有选中要操作的数据库:
// 原错误代码 $conn = new mysqli($servername, $username, $password); // 修正后 $conn = new mysqli($servername, $username, $password, $dbname);
2. 提交按钮缺少name属性,触发不了插入逻辑
你的提交按钮没有设置name="insert",所以PHP里isset($_POST['insert'])永远为false,根本不会执行插入代码。给按钮补上属性:
<input id="con_submit" name="insert" class="site-button" type="submit" value="Submit">
3. 变量名拼写错误
获取电话号码时字段名拼写错误,导致无法拿到正确值:
// 原错误代码(Numebr拼写错误) $Phone_Number = $_POST['Phone_Numebr']; // 修正后 $Phone_Number = $_POST['Phone_Number'];
4. SQL语法错误+过时的数据库扩展
- INSERT语句最后一个值后面多了个逗号,会触发SQL语法错误;
mysql_query是已废弃的扩展,建议用mysqli的方法,同时直接拼接变量有SQL注入风险,这里先做基础修正:
if(isset($_POST['insert'])) { // 先转义数据避免SQL注入(更安全的方式是用预处理语句) $Email_Address = $conn->real_escape_string($_POST['Email_Address']); $First_Name = $conn->real_escape_string($_POST['First_Name']); $Last_Name = $conn->real_escape_string($_POST['Last_Name']); $Phone_Number = $conn->real_escape_string($_POST['Phone_Number']); $Birthday = $conn->real_escape_string($_POST['Birthday']); // 修正SQL语句(去掉多余逗号,明确指定字段) $sql = "INSERT INTO Bee_Rewarded (Email_Address, First_Name, Last_Name, Phone_Number, Birthday) VALUES ('$Email_Address', '$First_Name', '$Last_Name', '$Phone_Number', '$Birthday')"; if ($conn->query($sql) === TRUE) { echo "Data are successfully saved..."; } else { // 输出错误信息方便调试 echo "Error: " . $sql . "<br>" . $conn->error; } }
5. 开启错误提示排查问题
空白页面通常是因为PHP错误被隐藏了,在PHP文件开头加上这两行,就能看到具体错误信息:
error_reporting(E_ALL); ini_set('display_errors', 1);
额外小建议
- 表单里的
requie类应该是required,可以实现前端必填项验证; - 确认数据库表
Bee_Rewarded的字段名、类型和你插入的数据完全匹配(比如生日字段要用DATE类型)。
把这些修正后,你的表单应该就能正常将数据写入数据库了。
内容的提问来源于stack exchange,提问作者Christopher Fewster
相关产品推荐
相关产品推荐

