[英]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不返回結果。
我的第一個猜測是可能要引起撇號-在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.