0

Firstly, my code:

    $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>';
    }

$account_exist_error does not return when the query doesn't find anything

I have also tried

if($account_exist === '') {
    ect
}

Neither of these return anything, and other relevant questions are not helping me, $account_exist = '' is set earlier in my code

4

3 回答 3

3

通常情况下,empty($var_name)会更可靠,对于任何内容null、空白或未定义都将返回 true。这甚至包括空数组。

但是,在这种情况下,您将返回一个 DB 对象。对于isset将始终返回 true ,对于empty将始终返回 false 。因此,您将要使用 DB 对象 API。在这种情况下,您应该使用rowCount

于 2013-09-22T03:31:38.143 回答
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

在这种情况下falsenull两者都是假值并与!运算符一起使用。如果你使用

f(!isset($account_exist))

然后,它总是被设置,因为$account_exist包含一个值。

于 2013-09-22T03:38:26.120 回答
0

尝试

if ($account_exist == null)
于 2013-09-22T03:35:45.713 回答