升级PHP 7.4+PDO时遇SQL中${$locationid},求解释其用法
解释PHP中${$locationid}的写法
这是PHP里**变量变量(variable variables)**的语法,作用是动态引用变量:
- 先解析内层的
$locationid,得到它的字符串值,比如假设$locationid = "store_456" - 然后这个字符串会被当作变量名,
${$locationid}就等价于直接写$store_456,最终取的是$store_456变量里存储的值
你在SQL语句里看到的这种写法风险极高——旧代码直接把变量拼进SQL,完全没有防护,很容易触发SQL注入攻击。现在你升级到PHP7.4+PDO,必须把这种写法改成PDO的参数绑定形式,比如:
$stmt = $pdo->prepare('UPDATE location_info SET storeid = :storeid WHERE ...'); $stmt->bindValue(':storeid', $targetVariable); // $targetVariable就是原本${$locationid}要取的值 $stmt->execute();
内容的提问来源于stack exchange,提问作者seveninstl
相关产品推荐
相关产品推荐

