2013-11-25 53 views
0

我寫了一個查詢一些問題在SQL SELECT和,不等於查詢

SELECT * 
FROM property_list 
WHERE property_zip=$my-zip 
     && property_visible='y' 
     && property_zip!=0 

與註冊用戶的郵政編碼來獲取財產,並有一個條件,物業可見的狀態是「Y」和屬性zip值不等於零。

問題是...

如果註冊用戶進入該頁面,並與那裏的郵政區碼屬性不可用。然後它顯示的郵政編碼爲零&能見度'n'的財產。

我想,它不顯示與郵政編碼財產「0」 &知名度「N」

+0

怎麼樣'其中$我的拉鍊<>「」'(或空或其他) – KickingLettuce

+0

$我-ZIP商店註冊用戶郵政編碼 – user2691372

回答

0

既然你已經比較property_zip值,有沒有需要檢查,如果它不爲0 。PHP代碼應該過濾,因爲如果沒有郵政編碼,查詢不需要執行(或準備),對吧?

$ my-zip在變量名中有短劃線,這在PHP中是不允許的。嘗試調用它$ myZip,$ my_zip或者那種類型的東西。

如果依賴於用戶輸入,總是會在SQL查詢中轉義任何變量。有必要從SQL injection保護您的網站。另外,如果你正在檢查一個字符串(我認爲通常應該是一個郵政編碼),那麼這部分查詢必須放在引號中。

全部放在一起,我認爲你正在尋找的代碼是類似如下:

// Check if the ZIP code isn't 0 
if(!$myZip) { 
    throw new Exception("Invalid ZIP code entered"); 
} 

// Building a query, quoting in single quotes and escaping the value $myZip 
$zipCodeQuery = " 
    SELECT * 
    FROM property_list 
    WHERE property_zip = '".mysql_real_escape_string($myZip)."' 
     AND property_visible = 'y' 
"; 

// Execute query here 

如果不解決這個問題,這個問題可能是周圍的代碼或輸入郵政編碼。

注意:防止SQL注入的更好方法是使用預準備語句。使用「mysqli的」一個很好的例子可以在這裏找到:mysqli::prepare

+0

謝謝,我已經做到了 – user2691372

+0

有幫助嗎?如果是這樣,請通過upvoting我來幫助我;-) – rkok

+0

是的,我是一個新成員,它不接受我的贊成票 – user2691372