【发布时间】:2015-10-18 06:35:40
【问题描述】:
我目前正在我的 Laravel 5 应用程序中实现搜索功能。现在我有以下代码:
$terms = implode("* ", explode(" ", trim($query)." "));
$sql = "MATCH(title, content) AGAINST('".$terms."' IN BOOLEAN MODE)";
$results = Post::whereRaw($sql);
其中$query 是用户提供的字符串。该代码从用户那里获取(以空格分隔的)关键字并对其进行全文搜索。问题是一个简单的' 可以破坏SQL 查询并允许SQL 注入。防止这种情况的最佳方法是什么?
【问题讨论】:
-
@MarcB 我查看了文档,但找不到
MATCH ... AGAINST ...语法的本机实现。我忽略了什么吗? -
@Lashane 我认为这里提供的答案比您链接的问题中发布的答案更优雅。这可能是因为下面提供的解决方案在 Laravel 4 中不存在。我认为这个问题提供的解决方案将有助于 Laravel 5 的未来用户。
标签: php sql laravel full-text-search laravel-5