-4

私は簡単なログインに取り組んでいます。ロジックの 1 つは、ユーザー名が存在しない場合、エラー メッセージが表示され、登録ページにリダイレクトされるというものです。ただし、コードを実行すると、上記のエラーが発生し続け、ユーザー名として何を入力しても、true として返されます。

   $res = $mysqli->query("SELECT Count(`userID`) FROM `users` WHERE `UserName` = '$username'");
    if($res ==0){
        return false;
    }
    else
        return true;
}

私は開発中のデータベースを管理しているため、データベースに含まれるユーザー名を把握しています。データベースにあるユーザー名を入力すると、カウントは 1 になるため true が返されるという印象を受けました。同様に、データベースにない名前を入力すると、カウントは 0 になり、したがって $res になります。偽になりますか?

4

2 に答える 2

0

あなたはまだ数えなければなりません!mysqli::query の戻り値は整数ではなく、結果オブジェクトです。

if ($res->num_rows == 0) {
    return false;
} else {
    return true;
}

戻り値を冗長に作成するのは、最適なコーディング スタイルではないと考えられています。

return ($res->num_rows > 0); // will be true if result is bigger than 0

そして、これは疑問につながります: 2 つ以上の行が返された場合はどうなるでしょうか?

于 2013-10-17T21:50:11.667 に答える
-1

それは次のように行うことができます:

return ($res && $res->num_rows >= 1) ;
于 2013-10-17T21:50:11.293 に答える