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

Laravel修改管理员密码报SQLSTATE[42S22未知列'0'错误如何解决?

错误根因

该报错和timestamp字段配置无任何关联,属于控制器代码的语法错误:
你在调用update方法更新密码时,错误使用了相等比较运算符==来构造数组键值对,而不是PHP数组要求的键值关联运算符=>。

你的错误代码如下:

Admin::where('id', Auth::guard('admin')->user()->id)->update(['password' == bcrypt($data['new_password'])]);

这里的'password' == bcrypt($data['new_password'])是布尔判断逻辑,返回结果为布尔值false,PHP会自动转成数值0,最终你传给update方法的参数实际是[0 => 0],Laravel解析时会把数组键0作为要更新的数据库字段名,才会触发Unknown column '0' in 'field list'的SQL报错。

修复方法

只需要把对应代码行的==替换为=>即可正常运行:

Admin::where('id', Auth::guard('admin')->user()->id)->update(['password' => bcrypt($data['new_password'])]);

优化建议

你可以直接用已经获取到的管理员登录实例调用更新方法,简化代码逻辑:

Auth::guard('admin')->user()->update(['password' => bcrypt($data['new_password'])]);

另外建议补充新密码的校验规则,比如最小长度、复杂度要求,降低安全风险。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:27:04