2012-10-14 72 views
0

該職位的預期值是0或1,而當值爲零則返回錯誤的價值FILTER_VALIDATE_INT返回錯誤0

if(!($data['status'] = filter_input(INPUT_POST,'status',FILTER_VALIDATE_INT))) 
{ 
    echo'Error'; 
} 
else 
return true; 
+0

爲什麼這個問題是用[tag:mysql]和[tag:database]標記的嗎? – eggyal

+0

以上驗證在MySQL數據庫插入之前。 –

回答

5

if語句調用的結果隱式轉換爲filter_input()爲布爾然後測試結果。在你的情況下,結果是0,它隱含地轉換爲FALSE,所以測試失敗。

你需要用抗FALSE身份比較明確的測試:

$data['status'] = filter_input(INPUT_POST,'status',FILTER_VALIDATE_INT); 
if ($data['status'] === FALSE) ... 

更多信息請參見PHP type comparison tables

1

我覺得這是每filter_input it is returning 0

返回值正確和驗證所以你會得到$data['status'] = 0

然後

!($data['status'] = 0)它對1這就是爲什麼它打印錯誤信息