【发布时间】:2019-05-12 14:20:33
【问题描述】:
查询并不总是简单的,有时我需要创建一个纯 SQL 查询,查询生成器也不适合。 При использовании DB::select, подготовливаются ли переменные, которые подставлены в запрос?
这种情况下会不会有sql注入?
$mastersInCity = DB::select('SELECT
master_user.master_id,
masters.specialization,
category_letter_master.category_letter_id AS master_letter,
COUNT(*) AS count_in_city
FROM master_user
LEFT JOIN masters ON master_user.master_id = masters.id
LEFT JOIN category_letter_master ON category_letter_master.master_id = master_user.master_id
WHERE ' . $chooiseId . ' = ' . $cityId . ' GROUP
BY master_user.master_id, master_letter');
或者,这种情况下,直接使用PDO比较好,这样自己手动准备请求,可以吗?
【问题讨论】:
-
在很多情况下,使用诸如 Doctrine 或 Eloqent 这样的 ORM 应该可以避免使用 DB::select 的必要性。如果这种查询方式是绝对必要的,那么清理用户输入的数据总是一个好主意。
标签: laravel laravel-5 query-builder laravel-query-builder