2017-05-09 37 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) 

问题解决了!