2017-01-11 6 views
0

私はユーザー名とパスワードを持つデータベースを持っています。私はこれらの両方を検索して一致するようにしたい場合、一致する場合、ユーザーはログインできます(エラーが表示されない場合)。どこから:2つの変数

しかし、自分のコードのif条件が満たされない(ユーザー名とパスワードが一致していても)。

私のSQLクエリは間違っていなければなりません。クエリで複数の変数を検索する解決策を見つけようとしましたが、不幸にも私が働いた答えを見つけることができませんでした。

def userLogin(self): 
    username, password = self.getUserPass() 
    con = sql.connect("database.db") 
    cur = con.cursor() 
    cur.execute("SELECT * FROM users WHERE (?) AND (?)", (username, password)) 
    if cur.fetchmany(size=1): 
     print("Username and Password match!") 
    else: 
     print("Wrong username and password combination.") 

答えて

3

パラメータ置換は、指定された変数の内容をクエリに挿入するだけです。したがって、ユーザー「myuserの」パスワード「MYPASS」のために、あなたが実行しているクエリは次のとおりです。

SELECT * FROM users WHERE ('myuser') AND ('mypass') 

これは、あなたがチェックする列を指定していないので、あなたが期待する何をするつもりはありません。まず、対話式SQLiteシェルから実行できる完全なサンプルクエリを記述します。ユーザー名の欄は、「利用者」と呼ばれ、パスワード欄は、「パス」と呼ばれている場合たとえば、あなたのクエリは次のようになります。

SELECT * FROM users WHERE user='myuser' AND pass='mypass' 

質問で(それは文字列だ場合は、引用符を含む)それからちょうど変数の値を置き換えますマーク:

SELECT * FROM users WHERE user=? AND pass=? 

あなたのコードにそのクエリを置き換えると、期待通りに動作するはずです。

関連する問題