2017-05-09 51 views
0

其'關於輸入足球錦標賽結果的表單。區分空值和0

表單從db獲取已輸入的數據並將其寫入html表單的value參數。如果在數據庫NULL值,以便在HTML我有

value=""` 

那場比賽沒有輸入並不能使一個數據庫中的變化,所以我將其過濾我做的查詢之前是很重要的。但現在可能會發生遊戲結束0:0但分貝不會安全。我怎麼能說系統不是空的/ NULL是0?

 if(!empty($_POST[$tore_heim] OR !empty($_POST[$tore_gast]))){ 
     $spiele_save = "UPDATE spiele SET tore_heim = '".$_POST[$tore_heim]."', tore_gast = '".$_POST[$tore_gast]."' WHERE id_spiele = ".$spiele_id[$i]."";  
     $spiele_save = mysqli_query($con, $spiele_save);}; 
     }; 
+1

'isset(...)&& strlen(...)> 0' ... ?! – deceze

+0

也許用'==='或'!=='運算符檢查。這可能會有所幫助 – SacrumDeus

+0

簡單的答案是查看[empty()']手冊(http://php.net/manual/en/function.empty.php),你會看到Zero被認爲是EMPTY – RiggsFolly

回答

-1

檢查值'0'!empty($_POST[$tore_gast])) || $_POST[$tore_gast] === '0'

+0

參考:http://php.net/manual/en/language.operators.comparison。 php – Eineki

+0

這存在訪問未定義索引併產生警告的風險!它試圖在'empty'時訪問'$ _POST [$ tore_gast]',這可能意味着**不存在**或者是'0'。 – deceze

-1

看看這個例子。

功能的isEmpty($變量){

return ( 
    !isset($_POST[$variable]) || 
    (empty($_POST[$variable]) && $_POST[$variable] !== "0") 
    ); 

}

如果(!的isEmpty($ tore_heim)){

// run your code here... 

}

+0

爲什麼在已經將值設置爲'isset' ...時再次測試'empty'? – deceze

+0

,因爲isset不檢查空間或空字符串。 isset只檢查變量是否設置,然後檢查變量是否不包含任何空值。 @deceze –

+0

然後只需使用'!$ variable',它具有相同的結果並且不使用多餘的錯誤抑制。 'empty'是'isset' +'!',你已經完成了'isset',不要(隱式地)重複它。 – deceze

0

謝謝deceze

if(isset($_POST[$tore_heim]) && strlen($_POST[$tore_heim]) > 0 
    OR 
    isset($_POST[$tore_gast]) && strlen($_POST[$tore_gast]) > 0) 

問題解決了!