首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多参数绑定防止SQL注入laravel和DB: WHERE子句中的raw

多参数绑定防止SQL注入laravel和DB: WHERE子句中的raw
EN

Stack Overflow用户
提问于 2021-12-31 12:54:37
回答 1查看 309关注 0票数 -1

如何绑定来自不同数组的多个参数以防止SQL注入?

代码语言:javascript
复制
$userTypeID = [1,2,3];
$userDeptID = [1,4,6];
$arr = join(",",$arr);
DB::select("select * from users WHERE userTypeID IN (?,?,?) AND userDeptID IN(?,?,?)");

我无法使用雄辩,因为我有一个复杂的查询,我使用的是原始查询。因此,为了防止SQL注入,我必须绑定参数,但这是行不通的。

EN

回答 1

Stack Overflow用户

发布于 2021-12-31 14:32:55

使用array_merge将两个数组合并为单个数组。并将其作为第二个参数传递给DB::select()

代码语言:javascript
复制
$userTypeID = [1,2,3];
$userDeptID = [1,4,6];
$arr = array_merge($userTypeID, $userDeptID);

DB::select("SELECT * FROM users WHERE userTypeID IN (?,?,?) AND userDeptID IN(?,?,?)", $arr);

编辑:或者,您也可以在Server中使用OPENJSON将json对象转换为行。然后,可以在IN操作符中使用它提取所需的数据。

代码语言:javascript
复制
$userDeptID = (array) json_encode([1,4,6]);
DB::select("SELECT * FROM users WHERE userTypeID IN (SELECT value FROM OPENJSON(?))", $userDeptID);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70542529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档