有人会php跟数据库的吗

我把数据插入数据库,数据库插入不进去数据,代码也没报错。
有人能帮忙解决吗?

img

img

img

img

img

参考GPT和自己的思路,这段 PHP 代码的问题可能在于 SQL 插入语句的语法错误或者变量的值没有正确赋值。以下是一个可能修正后的代码:

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";

// 创建连接
$con = new mysqli($servername, $username, $password, $dbname);

// 检查连接是否成功
if ($con->connect_error) {
    die("连接失败: " . $con->connect_error);
}

// 检查必要的表单字段是否填写
if (empty($_POST['username']) || empty($_POST['act'])) {
    die("请将信息填写完整!");
} else {
    // 设置字符集为 UTF-8
    mysqli_set_charset($con, 'UTF8');

    // 获取表单字段的值
    $username = $_POST['username'];
    $act = $_POST['act'];
    $material = $_POST['material'];
    $service = $_POST['service'];
    $tel = $_POST['tel'];
    $address1 = $_POST['address1'];
    $address2 = $_POST['address2'];
    $note = $_POST['note'];

    // 构建 SQL 插入语句
    $sql = "INSERT INTO `order` (`username`, `act`, `material`, `service`, `tel`, `address1`, `address2`, `note`) VALUES ('$username', '$act', '$material', '$service', '$tel', '$address1', '$address2', '$note')";

    // 执行 SQL 插入语句
    if ($con->query($sql) === TRUE) {
        echo "数据插入成功";
    } else {
        echo "Error: " . $sql . "<br>" . $con->error;
    }
}

// 关闭连接
$con->close();
?>

这段代码使用了 mysqli 的面向对象方式,构建了 SQL 插入语句,并将表单字段的值正确赋值到变量中。在执行 SQL 插入语句时,如果成功,将输出“数据插入成功”,否则将输出错误信息。最后,关闭了连接。

可能是因为数据库中的关键字order被用作了表名,需要将表名order用反引号括起来,修改$sql的语句为:

$sql = "insert into `order` (username, act, material, service, tel, address1, address2, note) values ('$username', '$act', '$material', '$service', '$tel', '$address1', '$address2', '$note')";

另外,可以将if语句中的mysqli_query的返回值取反,因为当插入成功时mysqli_query返回true,否则返回false,所以需要将代码修改为:

if (!mysqli_query($con, $sql)) {
    echo "<script>alert('下单失败');window.location.href='../order.html'</script>";
} else {
    echo "<script>alert('下单成功');window.location.href='../order.html'</script>";
}
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mydb";
$con = new mysqli($servername, $username, $password, $dbname);
if ($con->connect_error) {
    die("连接失败: " . $con->connect_error);
}
if (empty($_POST['username']) || empty($_POST['act'])) {
    die("请将信息填写完整!");
} else {
    mysqli_set_charset($con, 'UTF8');
    $username = $_POST['username'];
    $act = $_POST['act'];
    $material = $_POST['material'];
    $service = $_POST['service'];
    $tel = $_POST['tel'];
    $address1 = $_POST['address1'];
    $address2 = $_POST['address2'];
    $note = $_POST['note'];
    $sql = "insert into `order` (username, act, material, service, tel, address1, address2, note) values ('$username', '$act', '$material', '$service', '$tel', '$address1', '$address2', '$note')";
    if (!mysqli_query($con, $sql)) {
        echo "<script>alert('下单失败');window.location.href='../order.html'</script>";
    } else {
        echo "<script>alert('下单成功');window.location.href='../order.html'</script>";
    }
}
?>
<form action="./php/order.php" method="post" class="form-container">
    <h3 class="t1">请填写你要下单的信息(一双鞋子下一个订单)</h3>  
    <span class="t2">姓名:</span> <input type="text" name="username" class=""> 
    <br>
    <span class="t2">账号:</span> <input type="text" name="act" class=""> 
    <br>
    <span class="t2">鞋子的系列:</span>     
    <select name="material" id="" class="">
        <option value=""></option>
        <option value="">正面皮</option>
        <option value="">纺面皮</option>
        <option value="">绒面皮</option>
        <option value="">混合皮</option>
        <option value="">奢侈皮</option>
        <option value="">特殊皮</option>
    </select>
    <br>
    <span class="t2">附加服务:</span> 
    <select name="service" class="">
        <option value=""></option>
......


如果对您有帮助,请给与采纳,谢谢。

你的sql拼接有问题:

$sql = "insert  into order (username,act,material,service,tel,address1,address2,note) values ('" + $username + "', '" + $act + "','" + $material + "','" + $service + "','" + $tel + "','" + $address1 + "','" + $address2 + "','" + $note + "')";

还有就是插入语句的执行条件是当mysqli_query函数返回值为false时,下单成功。但是应该是当mysqli_query函数返回值为true时,下单成功,应改为:



if (mysqli_query($con, $sql)) {
    echo "<script>alert('下单成功');window.location.href='../order.html'</script>";
} else {
    echo "<script>alert('下单失败');window.location.href='../order.html'</script>";
}

你好,option没有数据是因为你option里面value值没有填写,把value写上试试看

这个咋解决啊,我的option标签的数据插不进去。

img

img

不知道你解决了没有?如果没有解决,我们可以聊聊。

你估计也知道怎么处理,但是你可能不知道如何入手调试,如果有需要,我们可以聊聊。

以下答案基于ChatGPT与GISer Liu编写:

当无法将数据插入数据库时,可能会出现多种原因,以下是一些可能的解决方案:

1.检查数据库连接

确保您的代码已经成功连接到数据库。您可以尝试在代码中添加一个数据库连接测试,以确保连接正常运行。

2.检查数据库表和字段

确保您正在尝试将数据插入正确的表和字段中。可以通过查询数据库的表结构来检查表和字段的名称。

3.检查数据格式

确保您正在尝试将数据插入数据库的格式与表中的格式匹配。例如,如果您尝试将字符串插入数字字段,则可能会导致错误。

4.检查数据库权限

确保您的数据库用户具有正确的权限,包括对所需表的插入权限。

5.打印 SQL 语句并手动执行

在代码中打印生成的 SQL 语句,检查是否正确。然后尝试手动在数据库中运行此 SQL 语句,以查看是否存在其他错误或警告消息。

希望这些解决方案能够帮助您解决问题!如果问题仍然存在,请提供更多详细信息,以便更好地帮助您解决问题。