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

PHP PostgreSQL项目编辑数据提交后未更新问题求助

数据更新无响应问题排查与修复

核心问题:GET参数名称拼写不一致

你的存储函数代码中,获取ID的参数是$_GET['id_stasiun_operator'],但视图表单的action属性里传递的参数是id_station_operator(注意拼写差异:stasiun vs station):

  • 存储函数:$id = $_GET['id_stasiun_operator'];
  • 视图表单action:form.php?mode=edit&id_station_operator=<?=$id;?>

这会导致$id无法获取到正确的记录ID,最终UPDATE语句的WHERE id_station_operator = $3条件匹配不到任何数据,所以数据库没有更新,也不会触发报错(SQL语句本身合法,只是无匹配行)。

修复方案:
统一参数名称,将存储函数里的代码修改为:

$id = $_GET['id_station_operator'];

其他排查与优化点

  • 验证更新语句的影响行数
    在执行UPDATE后,添加代码检查实际被修改的行数,确认是否匹配预期:
$result = pg_query_params($connection, $queryUpdate, array($id_stasiun, $keterangan, $id));
if(!$result){
    die("Error in SQL query: " . pg_last_error());
}
// 检查影响行数,若为0则说明WHERE条件无匹配
$affectedRows = pg_affected_rows($result);
echo "更新影响行数: $affectedRows";
  • 修复表单select的重复选项问题
    视图中select控件先输出当前选中的option,再循环输出所有station,会导致同一station出现两次选项。修改循环逻辑,动态设置selected属性避免重复:
$option_stasiun = "";
while($row_stasiun = pg_fetch_assoc($result_station)){
    $selected = ($row_stasiun['id_stasiun'] == $row['id_stasiun']) ? "selected" : "";
    $option_stasiun .= "<option value='{$row_stasiun['id_stasiun']}' $selected>{$row_stasiun['nama_stasiun']}</option>";
}

同时移除原来单独输出的重复option:

<select name="id_stasiun" id="id_stasiun">
    <?php echo $option_stasiun?>
</select>
  • 确保表单提交逻辑正常触发
    确认$var_a_st == "Submit"的判断是否生效,可查看调试输出的$var_a_st值。若表单的onSubmit="return check()"中check()函数返回false,会阻止表单提交,可临时注释该属性测试。

  • 改用PHP header跳转
    建议用header()函数替代meta刷新跳转,跳转前确保无任何输出:

// 清空输出缓冲
ob_start();
// ... 执行更新逻辑 ...
ob_end_clean();
header("Location: list.php");
exit;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 00:24:49