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

Laravel中如何在Update语句中传入自定义变量?

解决Laravel DB::update中变量绑定的问题

这问题我之前也踩过坑,其实核心是没掌握正确的参数绑定方法,咱们一步步来理清楚:

为什么你的写法不行?

你用单引号包裹SQL语句时,PHP不会解析里面的$homeplayer变量,SQL实际接收到的是字符串$homeplayer而不是变量的真实值;而且就算换成双引号直接拼接变量,还会有SQL注入的安全风险,绝对不推荐这么做。

两种正确的实现方式

Laravel的查询构建器支持安全的参数绑定,推荐用下面两种写法:

1. 匿名占位符(?)

把SQL中的固定值10替换成?,然后将$homeplayer放到绑定数组里:

DB::update('update users set elo = 44 where id = ? limit 1', [$homeplayer]);

这里数组里的元素会按顺序匹配SQL中的?占位符,安全又高效。

2. 命名占位符(更清晰)

如果后续SQL里有多个参数,用命名占位符可读性更强,也能避免参数顺序搞错的问题:

DB::update('update users set elo = 44 where id = :home_id limit 1', ['home_id' => $homeplayer]);

补充说明

你原来代码里的array(1)其实是多余的——最初的SQL里没有占位符,所以那个参数根本没被用到。用了占位符后,绑定数组里只需要放对应变量即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:56:32