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

Ms Access查询表达式缺少运算符SQL语法错误,PHPRunner更新表报错

问题根因

  • UPDATE语句括号不匹配:WHERE子句起始使用了2个左括号((,但末尾仅闭合了内部的2个括号,缺少1个外层右括号,直接触发SQL语法错误
  • Access数据库的日期字段值需要用#包裹,直接拼接日期值不符合Access的SQL语法要求
  • PHP数组键名未加引号:$values[DateField1]属于错误写法,PHP会将DateField1识别为未定义常量,实际取值异常
  • 原SELECT语句未做日期筛选,会返回该用户所有日期的分组统计第一条结果,不是对应日期的总工时,会导致更新的数据错误

修正后代码

$mykey = $values["OwnerID"];
$mykey1 = $values["DateField1"];
global $conn;

// 新增日期筛选,仅统计目标日期的工时
$str = "select SUM(Hours) AS [Hrs] FROM Attendance WHERE OwnerID='{$mykey}' AND DateField1=#{$mykey1}# Group by DateField1";
$rs = db_query($str);
$value = db_fetch_numarray($rs);
// 空值判断,避免无考勤记录时更新为空
$total = !empty($value[0]) ? $value[0] : 0;

// 补全括号、日期加#包裹、修正数组键写法
$strUpdate = "update HrsOT set `DailyHrs`='{$total}' Where (OwnerID='{$mykey}' AND Date=#{$values["DateField1"]}#)";

db_exec($strUpdate,$conn);
return true;

补充说明

如果Date是Access的保留字,执行仍报错的话,可以把更新语句里的Date改为[Date]避免保留字冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:27:03