我很困惑如何使用isset和empty,我试图编写一个简单的api,如果param为null,应该有错误说明哪个param丢失并返回错误。
下面我的陈述有什么不对?
$email= isset($_POST['email']) ? mysqli_real_escape_string($mysqli, $_POST['email']) : '';
if(empty($email)) {
echo 'email cannot be empty!'
}
答案 0 :(得分:1)
您实际上并不需要同时使用isset
和empty
,因为empty
已经这样做了。
如果变量不存在,则不会生成警告。这意味着 empty()本质上是!isset($ var)||的简洁等价物$ VAR == false。
更多详情请点击此处: http://php.net/manual/en/function.empty.php
所以你的代码可以这样看,例如:
if (empty(trim($_POST['email']))) {
echo "Email cannot be empty!\n";
// you should add return or raise exception here
// or even exit
exit;
}
$email = trim($_POST['email']);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Your email {$email} is invalid\n";
// you should add return or raise exception here
// or even exit
exit;
}
$email = mysqli_real_escape_string($email);
答案 1 :(得分:0)
我认为您正在尝试检查$email
值为null。您应该在if语句中检查$fname
。
答案 2 :(得分:0)
将$email
更改为:
$email= isset($_POST['email']) && !empty($_POST['email']) ? mysqli_real_escape_string($mysqli, $_POST['email']) : '';
因此$_POST['email']
不包含空值。
答案 3 :(得分:0)
尝试使用下一个代码段
std::string
答案 4 :(得分:0)
尝试此操作以检查所有缺少的字段:
$required_fields = array('email', 'name', 'password');
$err_msgs=array();
foreach($required_fields as $field) {
if(empty( $_POST[$field]) ){
err_msgs[]= $field . ' cannot be empty!';
}
}
if (!empty($err_msgs)) {
echo json_decode($err_msgs);
}
编辑:在阅读Axalix的答案后删除了isset()。