【发布时间】:2015-02-08 14:10:21
【问题描述】:
我正在 Laravel 中构建一个应用程序。我无法决定使用Match() 或Like 进行文本搜索。
我只想对一列进行文本搜索,即Varchar(42)。
我还将通过一些Where() 语句过滤掉查询,因此它不会对所有行进行文本搜索。
我使用的是 mysql 5.6+,所以 Match 可以与我的 innobd 引擎配合使用。
Match() 在大约 30k 行的表中效果好吗?
-
Laravel ORM 不支持匹配,所以我的查询如下所示:
$q = Input::get('query'); Post::whereRaw("MATCH(title) AGAINST(? IN BOOLEAN MODE)", array($q))->get();
为了避免 SQL 注入,我是否需要清理“$q”?由于我使用的是whereRaw()
【问题讨论】:
-
是的,
whereRaw是安全的。使用绑定 (?) 可以保护它免受 SQL 注入。 @GordonLinoff 的回答涵盖了您的其余问题...