繁体   English   中英

使用LIKE的Laravel查询不会返回任何结果

[英]Laravel query using LIKE does not return any result

嗨,大家好,我目前正陷入这个问题 我正在尝试在数据库上搜索某些内容,但未返回任何结果。 以下是我的代码。

搜索字符串1 =波士顿凯尔特人队

搜索字符串2 =波士顿凯尔特人队无法

DB post_title =波士顿凯尔特人队不能让公牛的损失影响难以缓解

查询

$data = $searchPost->where('post_title', 'like', '%'.$search.'%')
            ->orderBy('post_date', 'desc')
            ->offset($offset)
            ->limit($limit)
            ->get();

搜索字符串1返回结果,但搜索字符串2不返回结果。

很简单,因为您搜索的字符串不同。

搜索字符串2“ ..不能..”使用直引号

'

DB post_title“ ..不能..”使用弯引号

'

供参考: 直引号和弯引号

我的第一个猜测是可能要引起撇号-在SQL Server中,串联运算符为“ +”,因此您可能还想确保这是正确的。 也许尝试使用以下命令删除撇号字符:

replace($ search,'''',))

Microsoft SQL中的四个单引号是一个单引号的转义序列。

尝试以下代码:

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();

如您所见,在%的开头有一个“,而在%的末尾有另一个。

如果您仔细查看无法搜索和数据库,则'看起来会不同

不能vs不能

如果'不相同,请确保无法搜索。 简单。

必须使用str_replace方法更改撇号字符

$search = str_replace('-', ' ', urldecode($request->input('search')));
$search = str_replace("'", "’", $search);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM