2013-02-06 27 views
0

搜索的MySQL我有一個從用戶的查詢在mysql數據庫如何從PHP

<input type="text" name="query_textbox"><input type="submit" name="search_button"> 
<?php 
    if (isset($_GET['search_button'])) 
    { 
    $query = $_GET['query_textbox']; 
    $command = "SELECT * FROM `table` WHERE `ProteinName` LIKE '%$query%';"; 
    $result = mysql_query($command); 
    echo $result; 
    } 
?> 

搜索當我在文本框中把「人」,那麼它的工作原理。但是當我搜索「人類蛋白質」時,它顯示0個結果。 現在的問題是「如果我搜索包括像'人類蛋白質'這樣的空白的查詢,它應該顯示出'人類蛋白質'以及'人類'和'蛋白質'的結果。如何做?

+0

爆炸的搜索查詢和每個單詞做一個選擇 – Supericy

+0

Innodb的或MyISAM數據 –

+0

@Supericy可以請您詳細闡述我'新到PHP和MySQL –

回答

2

你可以做這樣的事情:???您正在使用什麼引擎

$query = $_GET['query_textbox']; 

// explode the query by space (ie "human protein" => "human" + "protein") 
$keywords = preg_split("#\s+#", $query, -1, PREG_SPLIT_NO_EMPTY); 

// combine the keywords into a string (ie "human" + "protein" => "'%human%' OR '%protein%'") 
$condition = "'%" . implode("%' OR '%", $keywords) . "%'"; 

$command = "SELECT * FROM `table` WHERE `ProteinName` LIKE $condition;"; 
+0

Thinks @Supericy如果我想根據最佳匹配以降序對結果進行排序。我該怎麼辦? –

+0

不確定是否誠實。但我可能會研究類似[similar_text](http://www.php.net/manual/en/function.similar-text.php)。但我不確定你是如何實現這一點的。 – Supericy

+0

我有點驚訝,你的答案已經兩次上調。我試過了你的建議,但它沒有奏效。 –

-1
$query = $_GET['query_textbox']; 

// explode the query by space (ie "human protein" => "human" + "protein") 
$keywords = explode(" ", $query); 

foreach($keywords as $key => $value){ 
    $condition[] = `ProteinName` LIKE "'%".$value."%'" 
} 

$cond_str = implode(' OR ', $condition); 
$command = "SELECT * FROM `table` WHERE $cond_str;"; 
+0

請評論下調答案的原因。 –

+1

不是downvoter,但是這1)給出語法錯誤(l.7); 2)是從接受的答案(15分鐘之前)複製大部分 –

+0

@DamienPirsy:接受的答案不起作用。我已經測試過它。而且,在我充分尊重的情況下,我想問你,你確定接受答案的作者有自己的邏輯,而不是從某處複製粘貼。我真的不介意有人低估了我的答案。我不是回購飢餓。但我只想知道原因。我糾正了我的答案。無論如何,謝謝你的回覆。 –