내 코드에서 if 문을 사용하여 사용자가 속해있는 사용자 그룹을 확인한 다음 각 사용자마다 다른 기능을 호출하도록합니다. 다음과 같이 내 현재 코드는 다음과 같습니다SQLite3 레코드 유효성 검사
c.execute('SELECT * from users WHERE username=? AND password =?',
(username_input, password_input))
if c.fetchone() is not None:
c.execute('SELECT usergroup from users WHERE username=? AND password=?',
(username_input, password_input))
user_group = c.fetchone()
for (usergroup,) in c:
if user_group == 1:
App.admin_login_successful(self)
elif user_group == 2:
App.user_login_successful(self)
else:
App.user_login_successful(self)
# This shouldn't happen, as all records should theoretically contain a value for usergroup.
내 기록을 1 또는 2 중 하나 인 값을 포함하는 것처럼, 비교 작업을 위해 무엇을해야하지만 검증이 작동하지 않습니다 무엇.
당신은''C에서 (사용자 그룹)에 대한 전'인쇄 (user_group) 무엇을 어떻게해야합니까 :'? 왜 for 루프에서 터플을 만들고 있는지 모르겠습니다. – roganjosh
SQL injection을 막기 위해 여기에 다른 사용자의 추천을 c : off로 (usergroup)했습니다.하지만 그의 대답은 명확하지 않습니다. 내가 인쇄 할 때 ('2',) –
당신은 데이터베이스에서 무엇인가를 추억하고 있습니다. 그래서 SQL 인젝션이 발생했다면 이미 일어 났을 것입니다. 나는 그 권고가 의미가 있다는 것을 확신하지 못하거나 문맥에서 벗어났다. 'for' 루프를 없애고 (fetchone()을 사용하여 1 개의 결과 만 얻을 수 있도록)'if' /'elif' 검사를'if int (user_group [0]) == 1 :'등으로 변경하십시오 . – roganjosh