嗨,大家好,我目前陷入了这个问题。我试图在数据库上搜索某些内容并且没有返回任何结果。以下是我的代码。
搜索字符串1 =波士顿凯尔特人队
搜索字符串2 =波士顿凯尔特人队
DB post_title =波士顿凯尔特人队不能让公牛队的损失影响困难的拉伸
QUERY
$data = $searchPost->where('post_title', 'like', '%'.$search.'%')
->orderBy('post_date', 'desc')
->offset($offset)
->limit($limit)
->get();
搜索字符串1返回结果,但搜索字符串2不返回。
答案 0 :(得分:2)
简单,因为你搜索不同的字符串。
搜索字符串2“..不能......”使用直引号。
DB post_title“..不能..”使用 Curly Quotes 。
答案 1 :(得分:0)
我的第一个猜测是撇号可能是罪魁祸首 - 在SQL Server中,连接运算符是" +"所以你也可能想确保这是正确的。也许尝试删除一个撇号字符:
替换($ search,'''''')
Microsoft SQL中的四个单引号是单引号的转义序列。
答案 2 :(得分:0)
请尝试以下代码:
1)由于'
中的can't
,您的代码可能会破坏字符串。
$data = $searchPost->where('post_title', 'like', "%{$search}%")
->orderBy('post_date', 'desc')
->offset($offset)
->limit($limit)
->get();
答案 3 :(得分:0)
在
之前遇到同样的问题试试这个
$data = $searchPost->where('post_title', 'like', '"%'.$search.'%"')
->orderBy('post_date', 'desc')
->offset($offset)
->limit($limit)
->get();
你可以看到有一个“之前 开头的%和最后的%之后。
答案 4 :(得分:0)
如果你仔细看到你不能在搜索和你的数据库中,'
看起来不一样
无法 VS 不能
当'不相同时,确定无法搜索。简单。
答案 5 :(得分:0)
必须使用str_replace方法更改撇号字符
$search = str_replace('-', ' ', urldecode($request->input('search')));
$search = str_replace("'", "’", $search);