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

PHP提交结账订单时无法向MariaDB存储timestamp数据问题求助

问题排查及修复方案

核心问题

你提交按钮没有添加name="submit"属性,导致PHP代码中isset($_POST['submit'])判断永远为假,全部业务逻辑都不会触发,所以页面空白且没有数据写入数据库。

其他隐性问题

  • session_start() 必须放在PHP代码最顶部,要在任何输出(包括空格、换行、include文件的前置输出)之前执行,否则会触发header已发送警告,导致跳转逻辑失效
  • 执行header()跳转后没有加exit()终止代码执行,可能引发后续异常
  • 没有添加SQL执行错误判断,遇到问题无法快速定位
  • 按钮的class属性重复定义了3次,属于不规范写法

修复后代码

前端表单代码

<form action="createOrder.php" method="POST">
  <button class="btn btn-danger filled-button payBtn" type="submit" name="submit">Checkout</button>
</form>

createOrder.php 业务代码

<?php 
// session_start必须放在代码最顶部,前面不能有任何输出内容
session_start();
include 'db.php'; 

if (isset($_POST['submit'])) {
    if (isset($_SESSION['email'], $_SESSION['id'])) {
        $userID = $_SESSION['id'];
        $timestamp = date('Y-m-d H:i:s');
        $sql = "INSERT INTO orders_id (userID,date) VALUES (?,?);";
        $stmt = mysqli_stmt_init($conn);
        if (mysqli_stmt_prepare($stmt, $sql)) {
            mysqli_stmt_bind_param($stmt, "is", $userID, $timestamp);
            mysqli_stmt_execute($stmt);
            header('Location:index.php');
            exit();
        } else {
            // 开发阶段可输出错误排查,上线后可替换为错误提示跳转
            echo "SQL执行错误:" . mysqli_error($conn);
            exit();
        }
    } else {
        header('Location:login.php');
        exit();
    }
} else {
    // 处理直接访问createOrder.php的非法请求
    header('Location:cart.php');
    exit();
}
?>

内容的提问来源于stack exchange,提问作者Ameen Assadi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 00:15:04