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

模态框更新订单状态无报错但数据库未同步问题求助

订单状态更新无报错但数据库未变更问题排查

问题描述

尝试通过模态框更新订单状态,操作过程无任何报错,但数据库中的订单状态并未更新。已检查表单及相关文件逻辑,仍未找到问题原因。

前端代码(模态框部分)

<!-- Transaction History -->
<div>
  <button type="button" class="close" data-dismiss="modal" aria-label="Close">
    <span aria-hidden="true">&times;</span>
  </button>
  <h4 class="modal-title"><b>Transaction Full Details</b></h4>
</div>
<div class="modal-body">
  <p>
    Date: <span id="date"></span>
    <span class="pull-right">Transaction#: <span id="transid"></span></span> 
  </p>
  <table class="table table-bordered">
    <thead>
      <th>Product</th>
      <th>Price</th>
      <th>Quantity</th>
      <th>Subtotal</th>
      <th>Status</th>
    </thead>
    <tbody id="detail">
      <tr>
        <td colspan="4" align="right"><b>Total</b></td>
        <td><span id="total"></span></td>
      </tr>

      <form action="order_edit.php" method="POST" enctype="multipart/form-data">
        <td colspan="3" align="right"><b>Status</b></td>
        <td><span id="total">
          <select name="status" id="status" class="form-control form-control-sm rounded-0" required>
            <option value="1" <?php echo isset($meta['status']) && $meta['status'] == 1 ? 'selected' : '' ?>>Pending</option>
            <option value="3" <?php echo isset($meta['status']) && $meta['status'] == 3 ? 'selected' : '' ?>>Out for Delivery</option>
            <option value="4" <?php echo isset($meta['status']) && $meta['status'] == 4 ? 'selected' : '' ?>>Done and Paid</option>
          </select>
        </span></td>
        <td>
          <button type="submit" class="btn btn-success btn-flat" name="edit"><i class="fa fa-check-square-o"></i> Update</button>
        </td>
      </form>
    </tbody>
  </table>
</div>
<div class="modal-footer">
  <button type="button" class="btn btn-default btn-flat pull-left" data-dismiss="modal"><i class="fa fa-close"></i> Close</button>
</div>

后端PHP代码(order_edit.php)

<?php
include 'includes/session.php';

if(isset($_POST['edit'])){
    $id = $_POST['id'];
    $status = $_POST['status'];
    date_default_timezone_set("Asia/Manila");
    $date = date('Y-m-d h:i:sa');
    $date1 = date('Y-m-d h:i:sa');

    try{
        $stmt = $conn->prepare("SELECT * FROM sales WHERE id=:id");
        $stmt->execute(['id'=>$id]);
        $row = $stmt->fetch();

        $stmt = $conn->prepare("UPDATE sales SET dateDelivered=:dateDelivered, order_received=:order_received, status=:status WHERE id=:id");
        $stmt->execute(['dateDelivered'=>$date,'order_received'=>$date1,'status'=>$status, 'id'=>$id]);
        $_SESSION['success'] = 'Status updated successfully';
    }
    catch(PDOException $e){
        $_SESSION['error'] = $e->getMessage();
    }
    $pdo->close();
}
else{
    $_SESSION['error'] = 'Fill up Update Status form first';
}

header('location: sales.php');
?>

核心问题及解决方案

  • 缺失订单ID参数:后端依赖$_POST['id']获取要更新的订单ID,但前端表单未包含该参数。需在表单内添加隐藏字段,其中[订单ID值]需从模态框关联的订单数据中渲染:

    <input type="hidden" name="id" value="[订单ID值]">
    
  • HTML结构非法:表单直接嵌套在<tbody>中且未包裹在<tr>内,浏览器解析异常可能导致表单数据提交不全。调整结构,将表单包裹在<tr>里:

    <tr>
      <form action="order_edit.php" method="POST" enctype="multipart/form-data">
        <td colspan="3" align="right"><b>Status</b></td>
        <td>
          <select name="status" id="status" class="form-control form-control-sm rounded-0" required>
            <!-- 选项内容 -->
          </select>
        </td>
        <td>
          <input type="hidden" name="id" value="[订单ID值]">
          <button type="submit" class="btn btn-success btn-flat" name="edit"><i class="fa fa-check-square-o"></i> Update</button>
        </td>
      </form>
    </tr>
    
  • 数据库连接对象混淆:后端使用$conn执行语句,但最后关闭的是$pdo,需统一为$conn->close();(若$conn是PDO实例,实际无需手动关闭,此句可直接移除)。

调试建议

  1. 在后端if(isset($_POST['edit']))开头添加调试代码,查看提交的参数:
    var_dump($_POST); exit;
    
  2. 检查UPDATE语句的受影响行数,确认是否命中目标订单:
    $stmt->execute(...);
    echo $stmt->rowCount(); // 输出1表示成功更新一行,0表示未找到对应订单
    
  3. 查看服务器PHP错误日志,排查隐性报错。

内容的提问来源于stack exchange,提问作者Remenio Madrona

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 19:20:26