Laravel 使用 LIKE 的查询没有 return 任何结果
Laravel query using LIKE does not return any result
大家好,我目前陷入了这个问题。我正在尝试在 DB 上搜索某些内容,但没有 return 任何结果。以下是我的代码。
搜索字符串 1 = 波士顿凯尔特人队
搜索字符串 2 = 波士顿凯尔特人队不能
DB post_title = 波士顿凯尔特人队不能让公牛队的失利影响艰难的伸展
查询
$data = $searchPost->where('post_title', 'like', '%'.$search.'%')
->orderBy('post_date', 'desc')
->offset($offset)
->limit($limit)
->get();
搜索字符串 1 return是结果,但搜索字符串 2 不是。
我的第一个猜测是撇号可能是罪魁祸首 - 在 SQL 服务器中,连接运算符是“+”,因此您可能还想确保它是正确的。也许尝试删除撇号字符:
replace($search, '''', '')
Microsoft 中的四个单引号 SQL 是单引号的转义序列。
很简单,因为你搜索的是不同的字符串。
搜索字符串 2“.. 不能 ..”使用 直引号。
'
DB post_title“..不能..”使用弯引号。
’
试试下面的代码:
1) 由于 can't
.
中的 '
,您的代码可能会破坏字符串
$data = $searchPost->where('post_title', 'like', "%{$search}%")
->orderBy('post_date', 'desc')
->offset($offset)
->limit($limit)
->get();
之前遇到过同样的问题
试试这个
$data = $searchPost->where('post_title', 'like', '"%'.$search.'%"')
->orderBy('post_date', 'desc')
->offset($offset)
->limit($limit)
->get();
如您所见,前面有一个 "
开头的 % 和结尾的 % 之后的另一个。
如果你仔细看你不能在你的搜索和你的数据库中,'
看起来不一样
不能
对比
不能
当'不一样时,肯定查不到。简单。
必须使用 str_replace 方法来更改撇号字符
$search = str_replace('-', ' ', urldecode($request->input('search')));
$search = str_replace("'", "’", $search);
大家好,我目前陷入了这个问题。我正在尝试在 DB 上搜索某些内容,但没有 return 任何结果。以下是我的代码。
搜索字符串 1 = 波士顿凯尔特人队
搜索字符串 2 = 波士顿凯尔特人队不能
DB post_title = 波士顿凯尔特人队不能让公牛队的失利影响艰难的伸展
查询
$data = $searchPost->where('post_title', 'like', '%'.$search.'%')
->orderBy('post_date', 'desc')
->offset($offset)
->limit($limit)
->get();
搜索字符串 1 return是结果,但搜索字符串 2 不是。
我的第一个猜测是撇号可能是罪魁祸首 - 在 SQL 服务器中,连接运算符是“+”,因此您可能还想确保它是正确的。也许尝试删除撇号字符:
replace($search, '''', '')
Microsoft 中的四个单引号 SQL 是单引号的转义序列。
很简单,因为你搜索的是不同的字符串。
搜索字符串 2“.. 不能 ..”使用 直引号。
'
DB post_title“..不能..”使用弯引号。
’
试试下面的代码:
1) 由于 can't
.
'
,您的代码可能会破坏字符串
$data = $searchPost->where('post_title', 'like', "%{$search}%")
->orderBy('post_date', 'desc')
->offset($offset)
->limit($limit)
->get();
之前遇到过同样的问题
试试这个
$data = $searchPost->where('post_title', 'like', '"%'.$search.'%"')
->orderBy('post_date', 'desc')
->offset($offset)
->limit($limit)
->get();
如您所见,前面有一个 " 开头的 % 和结尾的 % 之后的另一个。
如果你仔细看你不能在你的搜索和你的数据库中,'
看起来不一样
不能 对比 不能
当'不一样时,肯定查不到。简单。
必须使用 str_replace 方法来更改撇号字符
$search = str_replace('-', ' ', urldecode($request->input('search')));
$search = str_replace("'", "’", $search);