如何系結來自不同陣列的多個引數以防止 SQL 注入?
$userTypeID = [1,2,3];
$userDeptID = [1,4,6];
$arr = join(",",$arr);
DB::select("select * from users WHERE userTypeID IN (?,?,?) AND userDeptID IN(?,?,?)");
我無法使用 eloquent,因為我有一個復雜的查詢,我正在使用原始查詢。所以為了防止它被 SQL 注入,我必須系結引數,但這不起作用。
uj5u.com熱心網友回復:
使用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);
編輯:或者,您也可以OPENJSON在 SQL-Server 中使用將 json 物件轉換為行。然后可以在IN操作員中使用它來提取所需的資料。
$userDeptID = (array) json_encode([1,4,6]);
DB::select("SELECT * FROM users WHERE userTypeID IN (SELECT value FROM OPENJSON(?))", $userDeptID);
uj5u.com熱心網友回復:
除了 Eloquent 關系和原始 SQL 之外,還有其他選項。嘗試使用查詢構建器執行此操作:
$userTypeID = [1,2,3];
$userDeptID = [1,4,6];
DB::table("users")
->select("*")
->whereIn("userTypeID", $userTypeID)
->whereIn("userDeptID", $userDeptID);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/399638.html
標籤:php sql-server 拉拉维尔
下一篇:資料庫相關概念
