0

まず、私のコード:

    $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 が返されない

私も試してみました

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

これらのどちらも何も返さず、他の関連する質問は私を助けません. $account_exist = '' は私のコードの前に設定されています

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 に答える