簡體   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