首先,我的代码:
$stmt = $pdo->prepare("SELECT id FROM users WHERE
username = :user_email OR
email = :user_email");
$user_email = $_POST["usernameemail"];
$stmt->execute(array(
'user_email'=>$user_email
));
$account_exist = $stmt->fetch();
if(!isset($account_exist)) {
$account_exist_error = '<p style="color:#F00;">Username or Email not found</p>';
}
$ query_exist_error在查询找不到任何内容时不会返回
我也试过
if($account_exist === '') {
ect
}
这些都没有返回任何内容,其他相关问题对我没有帮助,$ account_exist =''在我的代码中设置了
答案 0 :(得分:3)
通常情况下,empty($var_name)
会更可靠,对于null
,空白或未定义的任何内容都会返回true。这甚至包括空数组。
但是,在这种情况下,您将返回一个DB对象。 isset始终返回true,empty返回false。因此,您将要使用DB对象API。在这种情况下,您应该使用rowCount。
答案 1 :(得分:1)
您可以使用
if(!$account_exist)
而不是
if(!isset($account_exist))
因为,它的返回值是
TRUE Success. Data has been fetched
FALSE Error occurred
NULL No more rows/data exists or data truncation occurred
在这种情况下,false
和null
都是假值,可与!
运算符一起使用。如果你使用
f(!isset($account_exist))
然后,它总是被设置,因为$account_exist
包含一个值。
答案 2 :(得分:0)
尝试
if ($account_exist == null)