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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:02:07