0

PDOの学習を始めたばかりです...

 function authenticate($username,$password)
 {
    $result=$this->con->query("select * from user where UserName='".$username."' AND Password='".$password."'");
    var_dump($result->rowCount()); //return null
    if($result)
        echo "hey going great";
    else
        echo "Hey are you gone mad?";
}

ユーザー名パスワードを使用して上記の関数を呼び出しています...しかし、間違ったユーザー名とパスワードを渡すと、毎回素晴らしい部分が返されます...

$result->rowCount()で試しましたが、null 値も返されます...

ここで私が間違っていることを教えてもらえますか?

4

5 に答える 5

2

あなたはほとんどすべて間違っています。

何よりもまず、PDO を使用する唯一の理由は、クエリでプレースホルダーを使用することです。
また、関数内でクエリの結果を確認するべきではありません。だから、それを作る

function authenticate($username,$password)
{
    $sql = "SELECT * FROM user WHERE UserName=? AND Password=?";
    $stm = $this->con->prepare($sql);
    $stm->execute([$username,$password]);
    return $stm->fetch();
}

そして電話する

if($userdata = $user->authenticate($username,$password))
    echo "hey going great";
else
    echo "Hey are you gone mad?";
于 2013-11-15T09:47:05.787 に答える
0
if($result)

これにより、変数に情報があるかどうかが常にチェックされます。クエリを実行してこの変数に保存すると、返された行数が保存されます。間違っていても、変数を設定する負の値を返します。

基本的に、変数が存在するかどうかを確認するだけで、どちらの場合にも存在します

于 2013-11-15T09:37:30.843 に答える
0
if($result->rowCount()>0){
        echo "hey going great";
    }else{
        echo "Hey are you gone mad?";
}
于 2013-11-15T09:33:59.860 に答える