2013-10-27 33 views
0

MYSQL可以做下一個嗎?MYSQL由同一個單元格中的多個值過濾?

我的條款= a b c

我的查詢= SELECT * FROM pages WHERE內容CONTAINS (a AND b AND c)

我需要做在一個頁面(搜索者)多條件查詢。如果我有一個"1a2b3c"的單元格,則必須對其進行過濾,並且如果其他單元格有"1a2b4d9i",則第二個單元格不得過濾。

另外,如果可以的話,我想過濾單詞。像"1a2b3c" --> "1 a 2 b 3 c"一樣,如果連接的文本不會過濾。

我測試此代碼

$sql = mysql_query("SELECT * FROM pages WHERE " 
         ."(`title` LIKE '%$s%' OR " 
         ."`title` LIKE '%$s' OR " 
         ."`title` LIKE '$s%' OR" 
         ."`content` LIKE '%$s%' OR " 
         ."`content` LIKE '%$s' OR " 
         ."`content` LIKE '$s%') " 
         ."AND `name` != 'inicio' " 
         ."AND `name` != 'contactenos' " 
         ."AND `name` != '404' " 
         ."AND `name` != '403' " 
         ."AND `name` != 'login'"); 

用一個數值的偉大工程,但有2個或多個值無法找到的東西。

另外我試過(a,b,c)a|b|cAGAINSTREGEX和其他,但我不能使它的作品。


編輯1: 如果我搜索「富巴」和我的PHP代碼將其轉換爲一個數組,我該怎麼做才能在MYSQL寫?我需要,如果我搜索"foo bar"和我的文本是"the foo bar is awesome"和其他文字是"the foo is worst"只打印第一。

回答

0

您可以縮短查詢時間。 你可以使用類似這樣

$sql = mysql_query("SELECT * FROM pages WHERE " 
         ."`title` LIKE '%".$s."%' OR " 
         ."`content` LIKE '%".$s."%' OR " 
         ."AND `name` != 'inicio' " 
         ."AND `name` != 'contactenos' " 
         ."AND `name` != '404' " 
         ."AND `name` != '403' " 
         ."AND `name` != 'login'"); 

你可以使用GROUP BY防止乘法結果:

$sql = mysql_query("SELECT * FROM pages WHERE " 
         ."`title` LIKE '%".$s."%' OR " 
         ."`content` LIKE '%".$s."%' OR " 
         ."AND `name` != 'inicio' " 
         ."AND `name` != 'contactenos' " 
         ."AND `name` != '404' " 
         ."AND `name` != '403' " 
         ."AND `name` != 'login'") GROUP BY title,content; 

爲更好概述:

$sql = mysql_query("SELECT * FROM pages WHERE " 
        ."`title` LIKE '%".$s."%' OR " 
        ."`content` LIKE '%".$s."%' OR " 
        ."AND `name` NOT IN('inicio','contactenos','404','403','login') GROUP BY title,content; 

但請使用前消毒的變量查詢;)

+0

感謝回答並刪除代碼。但問題是一樣的。如果我搜索「富吧」,我的PHP代碼將其轉換爲數組,我怎樣才能寫在MYSQL上? 我需要,如果我搜索「富酒吧」,我的文本是「富酒吧真棒」和其他文字是「富裕最糟糕」只打印第一。 – Jistycs

相關問題