0

クエリに問題があります。次のプロセス (php PDO と MySQL を使用) を使用して、1 つのテーブルからクエリを実行します。

クエリ文字列 $sql を作成します。

SELECT *  
FROM  `user`  
WHERE (`username`=:username OR  `email`=:username) 
      AND  `password`=:password AND  `valid`='1'; 

そして、この配列 $params を使用します。

Params
(
    [:password] => 18155dbf12503d726883784d1d9755f8d3382ba7
    [:username] => fakeEmail@fakeEmail.com
)

この関数を呼び出します。

$results_array = $database->QueryForObject($sql, $params);

public function QueryForObject($query, $binds)
{
     $stmt = $this->db->prepare($query);

     foreach($binds as $bindKey => &$key)
     {
        $stmt->bindParam($bindKey, $key, PDO::PARAM_STR);
     }

     return $this->RunObjectQuery($stmt, NULL , "stdClass");
}

私の問題は、ユーザー名が不完全または欠落している可能性があり、ユーザーを見つけるために使用するのはパスワードだけです...そうすべきではないと確信していますが、理由がわかりません。

補足として、ここに私のテーブルの説明があります:

Field            , Type                                           , Null  ,Key  ,Default , Extra
id               , int(10) unsigned                               , NO    ,PRI  ,NULL     auto_increment 
username         , varchar(30)                                    , NO    ,UNI  ,NULL                    
email            , varchar(50)                                    , NO    ,     ,NULL                    
password         , varchar(100)                                   , NO    ,     ,NULL                    
first_name       , varchar(30)                                    , NO    ,     ,NULL                    
last_name        , varchar(30)                                    , NO    ,     ,NULL                    
rights           , enum('normal','medium','high','admin','super') , NO    ,     ,NULL                    
last_loggedin    , timestamp                                      , YES   ,     ,NULL                    
status           , enum('current','expired','temporary')          , NO    ,     ,NULL                    
valid            , tinyint(1)                                     , NO    ,     ,NULL                    
other_comments   , varchar(500)                                   , YES   ,     ,NULL                    
gender           , enum('male','female')                          , YES   ,     ,NULL                    
company_position , varchar(50)                                   ,  YES  ,     , NULL   

どんな提案も大歓迎です!!

4

1 に答える 1