验证我的表单字段不为空时遇到问题。我以为我过去曾使用过isset但我在下面遇到问题。我知道我可以用==“”做到这一点,但想以这种方式弄明白。
if(isset($_POST['submit'])){
$error= false;
if (isset($_POST['name'])){$name=$_POST['name'];}else{$error=true; $error_message="enter a name"; echo "no name";};
if(!$error){
//SUBMIT TO DATABASE
}else{ echo $error_message;
}
}
但我一直收到error_message未设置的错误。
答案 0 :(得分:5)
Isset()只测试变量是否存在。在POST表单中几乎总是如此(即使变量为空)。为了确保它们不是,请使用empty()测试。 这是代码:
if(count($_POST) > 0){
$error = false;
if (!empty($_POST['name']))
$name = $_POST['name'];
else{
$error = true;
$error_message = "enter a name";
echo "no name";
}
if(!$error)
//SUBMIT TO DATABASE
else
echo $error_message;
}
你的第一个其他后面的分号也有语法错误。 注意,设置为0的变量被检测为空。查看http://php.net/manual/en/function.empty.php
答案 1 :(得分:1)
首先,我建议使用此方法确定是否有帖子。我通常使用以下之一:
if($_POST)
OR
if(count($_POST) > 0)
第二个isset()调用(检查名称)没问题。尝试使用完整大写字母将$ false变量设置为TRUE或FALSE。您还可以分别使用0和1表示TRUE和FALSE;它们可以正常使用if($ error)和if(!$ error)。我相信这就是你的问题所在。也就是说,$ error从未正确设置,因此它实际上不是TRUE,而是'false'。但是,因为没有设置$ _POST ['name'],而且$ error_message也没有设置。如果这对您有用,请告诉我。如果没有,我会进一步调查。
答案 2 :(得分:1)
空的PHP字符串不为null:
$a = '';
echo isset($a); //true
echo $a == ''; //true
使用==
代替
您还可以使用empty($var)
功能