2010-07-13 38 views
0

我需要做一個搜索引擎,用戶可以在通過名稱,年份,成員,一年(文本字段)搜索mysql和或查詢一起

搜索將與任何一個領域 或 搜索將與所有字段 或 搜索將與多個字段 - 如何使用只有一個查詢是可能的? 現在我的代碼是

$query="select * from fsb_profile where profile_name = '".$_REQUEST['name']."' and 
    profile_member= '".$_REQUEST['type']."' and profile_year= '".$_REQUEST['year']."' 
    and profile_course='".$_REQUEST['course']."' or profile_name = '".$_REQUEST['name']."' 
    or profile_member= '".$_REQUEST['type']."' or profile_year= '".$_REQUEST['year']."' 
    or profile_course='".$_REQUEST['course']."'"; 

- 但它不工作?

+1

你會問這些問題還有多少? – BoltClock 2010-07-13 11:41:57

+0

[mysql和或查詢一起運行]的可能重複(http://stackoverflow.com/questions/3237397/mysql-and-or-query-run-together) – 2011-08-13 12:29:03

回答

3

你可以使用這樣的事情:

SELECT ... 
FROM ... 
WHERE (profile_name = '$profile_name' OR '$profile_name' = '') 
    AND (profile_member = '$profile_member' OR '$profile_member' = '') 
    AND ... 

或者你可以建立動態根據你的字段查詢。

無論哪種方式,你應該避免直接從用戶輸入數據,而不首先逃避它的查詢。看看mysql_real_escape_string或使用綁定參數。

0

這應該做的伎倆:

$query="select * from fsb_profile where (profile_name = '".$_REQUEST['name']."' and profile_member= '".$_REQUEST['type']."' and profile_year= '".$_REQUEST['year']."' and profile_course='".$_REQUEST['course']."') or (profile_name = '".$_REQUEST['name']."' or profile_member= '".$_REQUEST['type']."' or profile_year= '".$_REQUEST['year']."' or profile_course='".$_REQUEST['course']."'"); 

此檢查是否所有字段都設置如果是這樣,它會返回結果,否則,如果字段的任意組合進行設置。