簡體   English   中英

php, sql 多個關鍵字匹配使用 LIKE

[英]php, sql multiple keyword match using LIKE

我正在嘗試使用 LIKE 從 sql 中獲取行,其中鍵與列中的鍵數組匹配。

$key = '%PDF%';
$q = mysql_query("SELECT * FROM `ads` WHERE key LIKE '$key' ORDER BY RAND() LIMIT 2");

這可以正常工作並顯示結果,但是當我將密鑰更改為 PDF 文件時。 IE:

$key = '%PDF 文件%';

它沒有顯示結果,因為在 db 中有一個鍵數組,請查看我的 db 列:

這是我的 sql 鍵列:

PDF, pdf, PDF SEARCH, pdf search, PDF ENGINE, pdf

那么解決方案是什么? 如果密鑰是 pdf 文件,如何獲得結果?

我認為可以通過拆分鍵然后匹配關鍵字。 正確的?

這可以通過explode(); 但如何? 以及如何搭配sql?

當鍵是'%PDF FILES%'時,您實際上是在搜索字符串“PDF FILES”,而不是 PDF 和 FILES 單詞的某種組合。

要實現您想要的,請嘗試構建如下查詢:

$key = '%PDF%';
$key2 = '%FILES%';

$q = mysql_query("SELECT * FROM `ads` WHERE (key LIKE '$key' OR key LIKE '$key2') ORDER BY RAND() LIMIT 2");

您可以使用各種技術與 arrays 並展開以構造具有可變數量關鍵字的動態查詢。

嘗試這個,

$keyvalues=split(" ",$search_text);//Breaking the string to array of words

// Append the query by the keywords
while(list($key,$val)=each($keyvalues)){
if($val<>" " and strlen($val) > 0)

{$sql .= " name like '%$val%' or ";}

}// end of while

尾隨 OR 可以通過

$sql=substr($sql,0,(strlen($sql)-3));

這是因為 LIKE 僅適用於一個字符串。 如果您想使用通配符,您必須使用更多帶有 OR 的 LIKE 語句。

另一方面,您可以使用 IN 接受逗號分隔的引號字符串,但它不接受通配符。

您不能在一個語句中為 Like 輸入多個關鍵字。

你可以試試這個它會幫助你。

WHERE key LIKE '%PDF%' OR '%pdf%' OR '%PDF SEARCH%'

等等.....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM