WampServer中PHP数据无法插入MySQL数据库,请求技术支持
解决WampServer中PHP无法向MySQL插入数据的问题
看了你的代码,我发现几个关键问题导致数据无法插入到MySQL数据库,咱们一步步来修复:
1. 缺失数据库连接代码(最核心问题)
你没有建立和MySQL的连接,这是数据插不进去的根本原因。在WampServer中,默认的MySQL用户名是root,密码为空,你需要在脚本最顶部添加连接代码:
<?php session_start(); // 先启动Session,必须放在所有输出之前 // 数据库连接配置 $servername = "localhost"; $db_username = "root"; $db_password = ""; $db_name = "你的数据库名称"; // 替换成你实际的数据库名 // 创建mysqli连接 $conn = mysqli_connect($servername, $db_username, $db_password, $db_name); // 检查连接是否成功 if (!$conn) { die("数据库连接失败: " . mysqli_connect_error()); } ?>
2. mysql_*函数已废弃,改用mysqli
PHP 7及以上版本已经彻底移除了mysql_*系列函数,WampServer默认的PHP版本大概率是7+,所以你必须使用mysqli_*或者PDO来操作数据库。
3. 表单提交参数大小写不匹配
你的表单按钮是name="continue",但后面的插入代码判断的是isset($_POST["Continue"])(首字母大写),这导致这个代码分支根本不会执行,把判断改成小写的continue。
4. SQL插入语句字段值对应错误
你原来的INSERT语句里,VALUES的顺序和字段完全不匹配,比如第三个值写死成了字符串'passport',而且first_name对应成了$lastname,这肯定插不对。另外,要注意用户输入的内容需要转义,防止SQL注入:
if(isset($_POST["continue"])){ // 循环处理每个乘客(因为fname/lname等是数组) $passenger_count = count($_POST["fname"]); for($j=0; $j < $passenger_count; $j++){ // 转义用户输入,防止SQL注入 $firstname = mysqli_real_escape_string($conn, $_POST["fname"][$j]); $lastname = mysqli_real_escape_string($conn, $_POST["lname"][$j]); $passport = mysqli_real_escape_string($conn, $_POST["passport"][$j]); $visa = mysqli_real_escape_string($conn, $_POST["visa"][$j]); $address1 = mysqli_real_escape_string($conn, $_POST["address1"][$j]); $address2 = mysqli_real_escape_string($conn, $_POST["address2"][$j]); $email = mysqli_real_escape_string($conn, $_POST["email"][$j]); $contact = mysqli_real_escape_string($conn, $_POST["contact"][$j]); $pin = mysqli_real_escape_string($conn, $_POST["pin"][$j]); // 修正后的SQL语句,字段和值一一对应 $sql = "INSERT INTO passengers (first_name,last_name,passport,visa,address1,address2,email,contact,pin) VALUES('$firstname','$lastname','$passport','$visa','$address1','$address2','$email','$contact','$pin')"; // 执行插入并输出错误信息(方便调试) if(mysqli_query($conn, $sql)){ echo "第".($j+1)."位乘客数据插入成功<br>"; } else { echo "第".($j+1)."位乘客插入失败: " . mysqli_error($conn) . "<br>"; } } }
5. Session启动位置错误
你把session_start()放在了代码中间,这会导致"headers already sent"的错误,必须把它移到整个PHP脚本的最顶部,在任何HTML输出之前。
6. HTML元素ID重复问题
你的表单里,单选按钮和输入框用了同一个id="cash",HTML中ID必须唯一,把输入框的ID改成cash-amount:
<input type="radio" name="payment" id="cash" checked="checked" value="cash"> <label for="cash">Cash</label> <input type="number" id="cash-amount" name="cash" size="8"><br><br>
额外调试建议
- 打开PHP错误提示:在Wamp的php.ini里设置
display_errors = On,这样能看到具体的错误信息,方便排查问题。 - 检查
$passengers变量是否正确定义:如果这个变量没有值,循环根本不会执行,你可以用$passenger_count = count($_POST["fname"])来获取实际的乘客数量。
按照这些步骤修改后,应该就能正常插入数据了。
内容的提问来源于stack exchange,提问作者stackdroid
相关产品推荐
相关产品推荐

