【问题标题】:PHP Mysql Laravel eloquent error because of slashes in string, Can't remove slashes由于字符串中的斜杠,PHP Mysql Laravel 雄辩错误,无法删除斜杠
【发布时间】: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


【解决方案1】:

传递数组而不是字符串

$all_users[]=$user_id->id;

Users::whereNotIn('user_id', $all_users)->update(['disabled' => 1]);

【讨论】:

  • 效果很好!谢谢!