2013-04-06 55 views
0

功能我有,現在只生產基於特定條件的結果得到滿足我的網站上一個簡單的搜索框。搜索網站上的PHP SQL

if(isset($_GET['action'])&&isset($_GET['searchbox'])) { 
    if($_GET['searchbox']!='') { 
     $result = mysql_query("SELECT * FROM `restaurants` WHERE `restaurant` LIKE '%{$_GET['searchbox']}%'"); // RESULT IS FIND EVERYTHING THAT MATCHES SEARCH FROM TABLE // 
    } else { 
     $result = mysql_query("SELECT * FROM `restaurants`"); 
    } 
} 

<form action="search.php" id="searchform" method="get" class="searchbox-container"> 
    <input type="text" id="searchbox" name="searchbox" class="searchbox" /> 
    <input type="submit" class="searchbox-btn" value="Search" /> 
    <input type="hidden" name="action" value="search" /> 

我要的是搜索框從數據庫中的所有表數據不只是具體的數據,如餐廳的名字返回結果。

我也希望它的工作,這樣,如果有人搜索「申通快遞」,那麼會導致諸如「斯托克」會顯示出來,所以搜索不必須是到底什麼是數據庫中。

藉口,如果它是錯誤的或過時的,這是從一所大學的教程這是一個小老頭採取的代碼。

+1

您的腳本可能是vulnera [SQL注入](http://en.wikipedia.org/wiki/SQL_injection)。 – Gumbo 2013-04-06 15:49:22

+1

[**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護[並且被正式棄用](http://j.mp/XqV7Lp)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 – Uby 2013-04-06 15:51:45

+1

您正在尋找'全文檢索'。 – 2013-04-06 15:53:08

回答

3

有沒有辦法,只是在搜索使用MySQL數據庫的一切,你仍然需要選擇哪些表進行搜索的列。您可以使用不同的查詢搜索不同的數據,然後使用PHP加入結果或進行某種JOIN。如果你不小心,儘管你最終會得到一些效率低下的東西。

還要說明一點 - 這應該已經匹配部分的話,你有它 - %'周圍的LIKE子句中的搜索字詞s表示‘在這個位置上’

要在餐廳搜索多個字段的任何字符,你可以用下面的啓動(如果您有實例的口號):

$result = mysql_query("SELECT * FROM `restaurants` WHERE `restaurant` LIKE '%{$_GET['searchbox']}%' OR `slogan` LIKE '%{$_GET['searchbox']}%'"); 

你不應該直接注入用戶輸入到SQL不過,它讓你容易受到攻擊!

要使用加入搜索其他表中更多的領域,你可以先從以下(如果您有實例的食物表):

$result = mysql_query("SELECT `restaurants`.* FROM `restaurants` LEFT JOIN `food` ON `food`.`restaurant_id` = `restaurant`.`id` WHERE `restaurant` LIKE '%{$_GET['searchbox']}%' OR `food` LIKE '%{$_GET['searchbox']}%'"); 

你可以看一下這兩個頁面,如果您需要與我剛纔給你幫助:

http://dev.mysql.com/doc/refman/5.0/en/select.html

http://dev.mysql.com/doc/refman/5.0/en/join.html

+0

感謝OR函數是我正在尋找。對不起,需要快速幫助完成任務,因爲這一整天都在苦苦掙扎! – FoamyMedia 2013-04-06 16:08:49