【发布时间】:2026-01-21 23:20:07
【问题描述】:
如何制作:
用户::whereNotIn('user_id', [$all_users])->update(['disabled' => 1]);
产生这个正确的查询:
更新users 设置disabled = 1, users.updated_at = '2020-01-03 14:11:09' 其中user_id 不在('642','532','539', '588','488','601')
我无法摆脱斜线。
字符串是这样构建的:$all_users=$all_users.$user_id->id."','";
如果我打印 $all_users 字符串,它会正确打印,见下文 回声 $all_users; 产生: '642','532','539','588','488','601'
Users::whereNotIn('user_id', [addslashes($all_users)])->update(['disabled' => 1]);
产生:
更新users 设置disabled = 1, users.updated_at = '2020-01-03 13:53:02' 其中user_id 不在('\'642\',\' 532\',\'539\',\'588\',\'488\',\'601\'')
Users::whereNotIn('user_id', [$all_users])->update(['disabled' => 1]);
产生:
更新users 设置disabled = 1, users.updated_at = '2020-01-03 14:11:09' 其中user_id 不在('\'642\',\' 532\',\'539\',\'588\',\'488\',\'601\'')
//我也试过这个 //Users::whereNotIn('user_id', [$all_users])->update(['disabled' => 1]); //Users::whereNotIn('user_id', [removeslashes($all_users)])->update(['disabled' => 1]); //Users::whereNotIn('user_id', [addslashes($all_users)])->update(['disabled' => 1]); //Users::whereNotIn('user_id', [str_replace("","\", $all_users)])->update(['disabled' => 1]);
谢谢!
【问题讨论】:
-
Eloquent 使用参数化查询,也就是准备好的语句。理解这一点可能会让您理解为什么您的字符串被编码为 ONE 参数以确保安全。
标签: php mysql laravel eloquent