2011-11-07 45 views
0

在我的表中我有一個專欄名稱(地名),其中我有一個字符串
像 - 城市銀行大廈。如何劃分存儲在myadmin數據庫中的字符串並以任意順序從該字符串中搜索單詞?

我有我的用戶界面,其中我有一個搜索框在該用戶可以輸入任何關鍵字進行搜索。

現在我想從表格列專色名稱這是一個字符串搜索該關鍵字。

所以基本上我想從存儲在數據庫中的字符串中提取一個子字符串。

例如,

市銀大廈 - 這是數據庫的字符串
銀行 - 我的搜索關鍵字

其中包含「銀行」的字符串中的一個詞應該是顯示字符串的任意組合在列表中。

這是我的代碼,

switch($search_by){ 
    case "spotname": 
     $sql_where_clause = "sname LIKE ' %" . $search_keyword."%'"; 
     break; 
} 

人知道如何做到這一點?

+2

ISN '這是一個基本的select * from table_name where spot_name like「%_the_word_you_search_fo%」? – mishu

回答

0
<?php 

    $query="Bank"; //or whatever you are looking for 
    $mysql=mysql_connect(); 
    $result=mysql_query("SELECT `ColumnName` FROM `TableName` WHERE `ColumnName` LIKE '%$query%'", $mysql); 
    mysql_close($mysql); 

?> 

MySQL查詢將成爲

SELECT `ColumnName` FROM `TableName` WHERE `ColumnName` LIKE '%Bank%' 

這將選擇什麼,在它Bank。所以它將匹配以下所有內容

City Bank Building 
Bank Building 
Building Bank 
Bank 
BankBank 
...and so on 
+0

我做了同樣的事情,但它沒有給我輸出。 –

+0

看到我修改的問題 –

+1

代碼中有一個空格'$ sql_where_clause ='sname LIKE'%「。 $ search_keyword。「%'」;'在'LIKE'之後和'%'之前。刪除該空間。你的代碼應該如下所示:'$ sql_where_clause =「sname LIKE'%」。 $ search_keyword。「%'」;' –

1

在您的查詢中使用LIKE僅在用戶輸入單個單詞或精確短語時才起作用。一個更好的辦法來做到這一點是使用全文索引搜索:

CREATE TABLE places (
    id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, 
    name VARCHAR(200), 
    FULLTEXT (name) 
); 

然後將查詢應該是這樣的:

SELECT * FROM places 
WHERE MATCH (name) AGAINST ('SEARCH PHRASE'); 

瞭解更多關於全文搜索的位置:http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html

相關問題