2016-05-24 99 views
0

這是我的php文件的一部分。searchkeyword時顯示所有相關數據

if(preg_match("/^[ a-zA-Z]+/", $_POST['searchName'])) 
{ 
    $name=$_POST['searchName']; 

    $con=mysql_connect ("localhost", "root", ""); 

    $mydb=mysql_select_db("food",$con); 

    $result=mysql_query("SELECT Name, Price FROM info WHERE Name='$name'"); 

    while($row=mysql_fetch_array($result)) 
    { 
     echo $row['Name']; 
     echo $row['Price']; 
    } 
} 
else 
{ 
    echo "<p>Please enter a search query</p>"; 
} 

現在對我來說,問題是,比如我要搜索雞肉比薩,但是當我鍵入整個句子是雞肉比薩它只會顯示信息。如果我輸入雞肉或其他關鍵字,我怎麼能做到這一點,它會顯示相關的雞肉如雞肉餡餅,雞翅相關的數據?感謝您的諮詢。

注:我會改變它的mysqli後,我解決了這個問題

+0

使用'Name LIKE'%$ name%''而不是'Name ='$ name'', –

+1

您可能在'LIKE'語法之後。請參閱[documentation](http://dev.mysql.com/doc/refman/5.7/en/string-comparison-functions.html)。 –

+0

**警告**:如果您只是學習PHP,請不要使用['mysql_query'](http://php.net/manual/en/function.mysql-query.php)接口。這是非常可怕和危險的,它在PHP 7中被刪除了。[PDO的替代品並不難學](http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps -pdo-for-database-access /)以及[PHP The Right Way](http://www.phptherightway.com/)等指南介紹了最佳實踐。你的用戶參數是**不是** [正確轉義](http://bobby-tables.com/php),並且有[SQL注入漏洞](http://bobby-tables.com/)可以被利用。 – tadman

回答

0

這裏需要使用LIKE運算符。 LIKE附帶多種方式。您可以在關鍵字之前,關鍵字之後以及關鍵字之前和之後使用%

實施例:

"SELECT Name, Price FROM info WHERE Name LIKE '%$name%'" 

提示:的 「%」 符號用於前和圖案之後,以限定通配符(缺少字母)兩者 。

而且使用mysql_*停止,開始mysqli_* OR PDO

+0

感謝它的工作。如果我在輸入無關數據時顯示錯誤,那該怎麼辦? – ron

+0

你可以檢查'mysqli_num_rows'來檢查是否有任何返回數據,如果沒有,那麼就發出錯誤信息。 –

+0

好的,謝謝你的建議 – ron

1
SELECT Name, Price FROM info WHERE Name LIKE 'chicken%'