2014-07-02 92 views
0

我需要一個腳本的幫助,該腳本可以搜索同一個表中的8個不同字段,但是如果不搜索一個或三個參數,它也會給出結果。我正在使用PHP和MySql,並且我一直在嘗試我的這種方式很長一段時間,現在我請求你們的專家。 我正在使用選擇框和抽屜框。你能幫我解決這個問題嗎?需要幫助搜索我的sql

Select * FROM mymembers WHERE 
country = $country AND 
gender = $gender AND 
haircolor = $haircolor AND 
hairlength = $hairlength AND 

問題出現時,其中一個沒有結果..... ????? 請幫忙 Carsten

+0

手動檢查選擇**或**複選框**全部選中,然後使用變量在WHERE子句中追加條件 – Ranjith

+0

這個問題似乎是無關緊要的,因爲它缺乏基本的研究水平。 – Strawberry

回答

0

使用PHP構建你的SQL。檢查變量是否爲空,然後添加它們。

E.g.

$sql = 'Select * FROM mymembers WHERE '; 
if (!empty($country)) $sql .= 'country = '.$country; 

請確保轉義您在SQL中使用的任何變量以防止注入。

+0

在使用數組時也可以使用這種方法嗎? – Carsten

0

您提到:希望它也能給的結果,如果一個或三個參數不searced爲

在這種情況下,你需要使用OR條件運算符。

代碼:

$query = "SELECT * FROM mymembers WHERE 
country = '" . $country . "' OR 
gender = '" . $gender . "' OR 
haircolor = '" . $haircolor . "' OR 
hairlength = '" . $hairlength . "'"; 

在我看來,查詢該表的最佳方法是使用「複選框」,「單選按鈕」和「選擇下拉菜單」細化搜索,因爲「最可能「country,gender,haircolorhairlength的值是預定義的,它們不會改變。 如果它是一個「搜索框」,那麼您可以依靠LIKE運算符,但就您的情況而言,結果將會很糟糕。