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

Laravel中使用HASHBYTES从AccessUser表查询用户数据的问题

解决Eloquent中使用HASHBYTES查询的问题

你的Eloquent写法失效的原因是:直接将HASHBYTES('md5',$password)作为字符串值传递给了查询,数据库会把它当成普通字符串和PASSWORD字段做比对,而不是执行这个哈希函数计算结果后再匹配。

以下是两种正确的Eloquent实现方式:

方式一:使用whereRaw(推荐,更安全)

通过whereRaw直接写入原生SQL条件,同时用参数绑定避免SQL注入:

$user = User::where('USERNAME_ACC', $username)
    ->whereRaw("PASSWORD = HASHBYTES('md5', ?)", [$password])
    ->first();

方式二:使用DB::raw包裹函数逻辑

如果要保留链式where的写法,可以用DB::raw让数据库执行哈希函数:

$user = User::where('USERNAME_ACC', $username)
    ->where('PASSWORD', DB::raw("HASHBYTES('md5', '$password')"))
    ->first();

注意:这种写法如果直接拼接$password存在SQL注入风险,建议优先使用方式一的参数绑定写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 04:15:05