2013-11-21 71 views

回答

6

只是包裝該行代碼在if檢查語句,如果它被設置:

if(isset($_GET['category'])) { 
    $STH->bindValue(':category', $_GET['category']); 
} 
+0

你會不會得到一個錯誤,如果你不」 t綁定':category'(在沒有設置類別的情況下)? – kero

+2

我使用mysql查詢本身的檢查條件,以便如果類別未設置,請不要在查詢中包括它...所以不會出現錯誤 –

+0

好點 - 需要有一個安全的默認設置 - 希望其餘的代碼處理這個給定它已經將被定義爲... – steve

1

驗證數組中的鍵不存在,或者從剿錯誤的獲得超全局

if (!empty($_GET['category'])) 
    $STH->bindValue(':category', $_GET['category']); 
else 
    $STH->bindValue(':category',''); 

OR

$STH->bindValue(':category', @$_GET['category']);

您通常不希望@整個行,或者您可能會錯過重要的錯誤。

+1

我不會downvote,因爲答案的第一部分是可以接受的,但請不要提倡使用'@'。你應該嘗試處理錯誤,而不是壓制它。 – Tomdarkness

1

您可以使用三元運算這一點,但你需要定義一個默認值

$STH->bindValue(':category', isset($_GET['category']) ? $_GET['category'] : ''); 

這是短期的

if (isSet($_GET['category'])) 
    $STH->bindValue(':category', $_GET['category']); 
else 
    $STH->bindValue(':category', '');