У меня есть вопрос, у меня есть код, который делает запрос на выборку:установить переменную как 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
Почему это?
Bobby таблицы .. – wim
вы можете быть более конкретным, пожалуйста – davi
@davi он говорит о конкретном виде SQL атаки вы делаете себя уязвимыми тоже. Если злонамеренный пользователь имеет учетные данные и знает ваше имя таблицы, он может установить 'loginVar' на свое имя пользователя и' passVar' на '; DROP TABLE ; 'и ваш код выведет всю таблицу. –