-3

クエリがデータベースの値を返さない理由を理解するために 5 時間以上試みました。別のクエリを使用してテストし、ユーザー ID と等しい _iD を返しましたが、接続できましたが、これで大変な時期..

注意: 未定義の変数: 5 行目の _iPassword

注意: 未定義の変数: 8 行目の _iUsername

public function User_Login($_iUsername,$_iPassword) {

    $md5_password = md5($_iPassword);

    $sth = $db->prepare("SELECT _iD FROM users WHERE _iUsername = :username AND _iPassword = :password AND _iStatus = 1");
    $sth->bindValue(":username", $_iUsername, PDO::PARAM_STR);
    $sth->bindValue(":password", $md5_password, PDO::PARAM_STR);
    $sth->execute();

    if ($sth->rowCount() == 1) {
        $row = $sth->fetch(PDO::FETCH_ASSOC);
        return $row['_iD'];
    } else {
        return false;
    }
}

これは私が変換しているMySQLのクエリですが、何が間違っているのかわかりません..

public function User_Login($username,$password) {
    $username=mysql_real_escape_string($username);
    $password=mysql_real_escape_string($password);
    $md5_password=md5($password);
    $query=mysql_query("SELECT uid FROM users WHERE username='$username' and password='$md5_password' AND status='1'");

    if( mysql_num_rows( $query ) == 1 ) {
        $row = mysql_fetch_array( $query );
        return $row['uid'];
    } else {
        return false;
    }
}
4

1 に答える 1

4

何らかの理由でエラー メッセージからファイル名を省略しましたが、それは重要な部分です。

$sth->bindValue(":username", $_iUsername, PDO::PARAM_STR);
$sth->bindValue(":password", $md5_password, PDO::PARAM_STR);

5 行目と 8 行目は明らかに連続しており、スクリプトの先頭から 5 行以上あるため、5 行目と 8 行目は使用できません。

したがって、このエラーが他のファイルで発生したか、あるファイルを編集しているが別のファイルを実行しています。

これらの単純なタイプミスのような間違いをすべて再確認してください。問題が確実に見つかります。

于 2013-05-23T09:37:50.450 に答える