如何绑定来自不同数组的多个参数以防止SQL注入?
$userTypeID = [1,2,3];
$userDeptID = [1,4,6];
$arr = join(",",$arr);
DB::select("select * from users WHERE userTypeID IN (?,?,?) AND userDeptID IN(?,?,?)");我无法使用雄辩,因为我有一个复杂的查询,我使用的是原始查询。因此,为了防止SQL注入,我必须绑定参数,但这是行不通的。
发布于 2021-12-31 14:32:55
使用array_merge将两个数组合并为单个数组。并将其作为第二个参数传递给DB::select()。
$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操作符中使用它提取所需的数据。
$userDeptID = (array) json_encode([1,4,6]);
DB::select("SELECT * FROM users WHERE userTypeID IN (SELECT value FROM OPENJSON(?))", $userDeptID);https://stackoverflow.com/questions/70542529
复制相似问题