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

PHPRad中使用rawQuery更新数据库行报PHP语法错误如何解决?

问题原因

你遇到的是PHP双引号字符串的变量解析语法错误:当在双引号包裹的字符串中直接使用带字符串键名的数组成员(比如$_COOKIE['Lat'])时,PHP解析器无法正确识别变量边界,就会抛出T_ENCAPSED_AND_WHITESPACE相关的语法错误。
另外你当前的写法还存在SQL注入风险:直接把用户可控的Cookie值拼入SQL语句,没有做参数绑定,容易被恶意构造的Cookie值攻击。

修复方案

最优方案:全参数绑定(推荐)

将Cookie取值也作为参数传入rawQuery,不要直接拼入SQL语句,同时可以把两次更新合并为一次执行,提升效率:

// 一次性更新两个字段,所有可变值全部走参数绑定
$params = array($_COOKIE['Lat'], $_COOKIE['Long'], $rec_id);
$bool = $db->rawQuery("UPDATE drvmarkers SET lat = ?, lng = ? WHERE id = ?", $params);

这个方案同时解决了语法错误和SQL注入风险。

临时语法修复方案(不推荐,仅解决语法问题)

如果坚持要在SQL字符串内直接写Cookie变量,可以用大括号包裹变量明确边界:

// 仅修复语法,仍存在SQL注入风险
$params = array($rec_id);
$bool = $db->rawQuery("UPDATE drvmarkers SET lat = {$_COOKIE['Lat']} WHERE id = ?", $params);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:30:06