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

PHP PDO执行UPDATE后数据库未更新 表单提交修改无效问题

问题原因及修复方案

1. 字段名拼写错误

UPDATE语句中写的title字段和实际表结构的字段名不符,从前面查询逻辑可知表中对应字段是titel,字段名不匹配导致更新不生效。
修改UPDATE语句对应字段:

// 原错误写法
$stmt = $connection->prepare('UPDATE films SET title = ?, duur = ?, datum_van_uitkomst = ?, land_van_uitkomst = ?, omschrijving = ?, link = ? WHERE id = ?');
// 修正后
$stmt = $connection->prepare('UPDATE films SET titel = ?, duur = ?, datum_van_uitkomst = ?, land_van_uitkomst = ?, omschrijving = ?, link = ? WHERE id = ?');

2. 表单提交后ID参数丢失

你的$array_id是从GET参数中获取的,但是表单用POST提交时没有携带id参数,提交后$array_id为空,WHERE条件匹配不到任何数据行,自然无法更新。
修复方案:在表单中添加隐藏域传递id参数:

<form method="POST" autocomplete="off">
  <!-- 新增隐藏域 -->
  <input type="hidden" name="id" value="<?= $array_id ?>">
  <!-- 原有表单内容不变 -->
</form>

同时修改获取id的逻辑,优先从POST中取:

// 原写法
$array_id = $_GET["id"];
// 修正后
$array_id = isset($_POST['id']) ? $_POST['id'] : $_GET['id'];

3. PDO未开启错误提示,无法排查问题

初始化PDO时添加错误模式配置,出现SQL错误时直接抛出异常,方便定位问题:

$connection = new PDO('mysql:host=localhost;dbname=netland', $user, $pass);
// 新增以下配置
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

4. 冗余代码及执行状态判断缺失

UPDATE语句执行后不需要调用fetchAll(),该方法是用来获取查询结果集的,更新操作仅需要判断执行状态即可:

// 去掉这行冗余代码
// $updated_array = $stmt->fetchAll();
// 可以添加执行成功的判断
if ($stmt->rowCount() > 0) {
  echo "更新成功";
  // 可选:更新成功后刷新页面拉取最新数据
  header("Refresh:0");
}

额外优化:修正表单action错误

原代码中action="<?php $_PHP_SELF ?>"写法错误,$_PHP_SELF不是合法变量,且没有输出逻辑,要么直接省略action属性(默认提交到当前页),要么修正为:

action="<?= $_SERVER['PHP_SELF'] . '?id=' . $array_id ?>"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:15:03