0

以前の投稿で説明したように、「小さな」プロジェクトを からMYSQLにアップグレードしていMYSQLiます。プロジェクト全体を正常にアップグレードしましたが、新しいユーザーを作成するまで、すべてが正常に機能していると思いました..問題は、必要なユーザー名を使用できることです。私が使用するユーザー名に関係なく、常にユーザー名としてログインしますID = 1

これが私のコードです:

ログイン:

function login($username, $password) {
    $id = user_id_from_username($username);
    $username = sanitize($username);
    $password = md5($password);

    global $db_connect;

    $result = $db_connect->query("SELECT COUNT(id) FROM `members` WHERE `username` = '$username' AND `password` = '$password'");
    if (false === $result) {
        return false;
    }
    return ($result->num_rows == 1) ? $id : false;
}

USERNAME のユーザー ID:

function user_id_from_username($username) {
    $username = sanitize($username);
    global $db_connect;

    $result = $db_connect->query("SELECT(id) FROM members WHERE username = '$username'");
    if (false === $result) {
        return false;
    }
    return ($result->num_rows == 1) ? true : false;
}

私は非常に多くのことを試し、すべてのファイルを比較していMYSQLiましたがMYSQL、それでも問題は見つかりません。

4

2 に答える 2

1
return ($result->num_rows == 1) ? $id : false;

で行を数えているため、常にtrueを返すSELECT COUNT(id)ため、常に1つの結果が得られます

次に、user_id_from_username で:

 return ($result->num_rows == 1) ? true : false;

user_id ではなく TRUE を返します。true ではなく、ユーザー ID を返すように変更します。

true == 1 であるため、常にユーザー ID が 1 になります。

于 2013-01-28T21:03:53.437 に答える
0

関数 function user_id_from_username($username) は常に true または false を返します。関数が true = 1 を返すため、ユーザー ID 1 を取得しています。

MYSQLi に書き直す前の関数はどのようなものでしたか?

于 2013-01-28T21:06:06.740 に答える