2015-03-22 3 views
-1

У меня есть вопрос, у меня есть код, который делает запрос на выборку:установить переменную как stringvar.get()

loginquery = "SELECT * from User " 
loginquery = loginquery + "WHERE UserName="+ loginVar.get() +" AND Password="+ passVar.get()+"" 

Проблема с этим состоит в том, что результат SELECT * от пользователя, где UserName = и пароль =

Как это исправить?

EDIT :::::

Это мой код

loginquery = ("SELECT * from User " 
       "WHERE UserName=%s AND Password=%s") 
bobby = (loginVar.get(),passVar.get()) 

и я

(query.execute(loginquery % bobby) 

мой результат печати:

SELECT * from User WHERE UserName=usernameentered AND Password=passwordentered

Однако в MySQL разъема появляется эта ошибка:

mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND Password=' at line 1 

Почему это?

+2

Bobby таблицы .. – wim

+0

вы можете быть более конкретным, пожалуйста – davi

+0

@davi он говорит о конкретном виде SQL атаки вы делаете себя уязвимыми тоже. Если злонамеренный пользователь имеет учетные данные и знает ваше имя таблицы, он может установить 'loginVar' на свое имя пользователя и' passVar' на '; DROP TABLE ; 'и ваш код выведет всю таблицу. –

ответ

0

Вы должны добавить кавычки строковых литералов:

loginquery = ("SELECT * from User " 
       "WHERE UserName='%s' AND Password='%s'") 
+0

Нет, все, что он делает, добавляет цитаты сверху, поэтому результат: SELECT * от пользователя WHERE UserName = '' AND Password = '' – davi

+0

Когда я добавляю эти вместо того, чтобы давать мне что ошибка он пропускает меня к неудаче сразу «Защите LoginPress(): если (query.execute (loginquery% бобби)): печати (loginquery% бобби) db.commit() печати ("! вошедший") прочее: печать (входной запрос% bobby) db.commit() print ("Failure !!") ' – davi

+0

Это означает, что методы 'loginVar.get()' и 'passVar.get()' возвращают пустые строки. Это не имеет никакого отношения к тому, что вам нужны котировки. – Selcuk

Смежные вопросы