gpt4 book ai didi

php - 如何仅在 LIKE 查询 Laravel 中找到整个单词?

转载 作者:行者123 更新时间:2023-11-29 05:05:39 26 4
gpt4 key购买 nike

如何在 Laravel Eloquent 的 LIKE 查询中找到整个单词?

例如,如果有人搜索 SA,则以下结果可能会出现 LIKE %sa%:

  • 我叫山姆
  • 我住在南澳

但我需要一个只返回的搜索:

  • 我住在南澳

我怎样才能做到这一点,同时防止 SQL 注入(inject)?因此,我对原始查询非常谨慎 - 除非提供任何替代方案?

谢谢。

最佳答案

我个人会使用 REGEXP (RLIKE),这会导致如下结果:

$place = 'sa';
$res = DB::select( DB::raw("select * from my_table where place REGEXP '[[:<:]]$place[[:>:]]'") );

但这会创建一个通过 SQL 注入(inject)进行攻击的向量,因此为了清理查询,我们可以执行以下操作:

$place = 'sa';
$results = DB::select( DB::raw("select * from my_table where place REGEXP '[[:<:]]:place[[:>:]]'"), array(
'place' => $place,
));

select()接受绑定(bind),可以查看here :)

编辑

这是select的签名

public function select($query, $bindings = [], $useReadPdo = true)

关于php - 如何仅在 LIKE 查询 Laravel 中找到整个单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48760377/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com