如何在Laravel的Eloquent中找到LIKE查询中的整个单词?
例如,如果有人搜索过SA,则可以看到以下结果:LIKE%sa%:
但我需要一个只返回的搜索:
如何在防止SQL注入的同时完成此操作?由于这个原因,我对原始查询非常谨慎 - 除非提供任何替代方案?
谢谢。
答案 0 :(得分:3)
就个人而言,我会使用REGEXP
(RLIKE
),这会产生以下结果:
$place = 'sa';
$res = DB::select( DB::raw("select * from my_table where place REGEXP '[[:<:]]$place[[:>:]]'") );
但这会通过SQL注入创建一个攻击向量,因此为了清理查询,我们可以执行以下操作:
$place = 'sa';
$results = DB::select( DB::raw("select * from my_table where place REGEXP '[[:<:]]:place[[:>:]]'"), array(
'place' => $place,
));
select()
接受绑定,您可以检查here:)
这是select
public function select($query, $bindings = [], $useReadPdo = true)