2015-12-22 88 views
0

第一:Laravel SelectRaw VS DB:原

DB::table('someTable') 
->selectRaw('count(*), min(some_field) as someMin, max(another_field) as someMax') 
->get(); 

二:

DB::table('someTable')->select(
array(
     DB::raw('min(some_field) as someMin'), 
     DB::raw('max(another_field) as someMax'), 
     DB::raw('COUNT(*) as `count`') 
    ) 
)->get() 

以上兩種查詢的結果是一樣的,但我的問題是有沒有 可能存在的安全問題(SQL注入)與這兩個查詢如果我 直接使用用戶輸入在哪裏條件。

+0

請提供一個例子 – xAoc

回答

1

按Laravel的documentation

注:Laravel查詢生成器使用PDO參數結合,以保護 你對SQL注入攻擊的應用程序。沒有必要將 乾淨的字符串作爲綁定傳遞。

+0

是的,這是正確的,但在DB ::原料這段文字是「這些表達式將被注入的查詢字符串,所以要小心,不要製造任何SQL注入點!」,所以你需要小心你如何使用DB :: raw,但在這種情況下,你沒有輸入,所以沒有注入向量。 –