【问题标题】:Special Characters and Searches with Laravel 3Laravel 3 的特殊字符和搜索
【发布时间】:2019-03-30 04:21:41
【问题描述】:

我正在使用网格来显示业务。我将把我们的 laravel 调用减少到最低限度,所以假设我有大约 20,000 家企业,如果不需要,我不想全部加载它们。所以我在加载网格以输入和查询之前显示一个搜索栏,并根据他们的搜索输入,我使用 Laravel 将匹配的内容加载到网格中。

我遇到的问题是特殊字符。如果在数据库中我有一个 Lucky's Bar 的企业名称,并且用户搜索输入是 Luckys Bar 没有撇号,它不会找到结果。与斜线或破折号相同。

实现这一目标的最佳方法是什么?

PHP - 搜索语句

public function search($search_input) {
   $response = DB::table(self::$table)
          ->select(array(
            'ID',
            'Signup_Date',
            'Business_Name'
        ))
        ->where('Business_Name', 'LIKE', '%'.$search_input.'%')
        ->order_by('Signup_Date', 'desc')
        ->get();
   return $response;
}

使用 Laravel 3,是的,我知道它已经过时,我们计划升级,但这是当前需要修复的问题。 https://laravel3.veliovgroup.com/docs/database/fluent

【问题讨论】:

  • '我知道它已经过时了,我们计划升级,但这是一个需要修复的当前问题。' - 嘿,我以前听说过这个,很奇怪足够的另一个问题出现了,它延迟了它。考虑到 Laravel 现在是 5.7,你可以肯定它已经修补了早期版本中的许多主要安全问题。
  • 数据库中实际存储的是什么?是文字' 还是对应的实体?
  • 您可以在查询中使用HTML::entities
  • 抱歉,是的,在数据​​库中应该有 Lucky's Bar。
  • 确保撇号是',而不是像here那样的其他东西。

标签: php laravel laravel-3


【解决方案1】:

一种可能慢得让人无法接受的方法是

WHERE REPLACE(field, "'", "") LIKE 'tam osha%"

它在数据库中的哪个位置存储为Tam O'Shanter

【讨论】:

    猜你喜欢
    • 2021-09-12
    • 1970-01-01
    • 2011-04-23
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    • 2016-03-11
    • 2018-08-16
    • 1970-01-01
    相关资源
    最近更新 更多