2015-04-24 38 views
0
C:\Python34\python.exe C:/Users/Stig/Desktop/python/main.py 
File "C:/Users/Stig/Desktop/python/main.py", line 9 
    if(query.execute("SELECT * FROM 'USERS' where 'username'" + `username` + "' AND `password`='" + `password`)): 
                   ^
SyntaxError: invalid syntax 

Code:语法错误:在Python mysql的登录无效语法

import MySQLdb 
from tkinter import * 

root = Tk() 

def makeLoggedInWindow(): 
    if(query.execute("SELECT * FROM 'USERS' where 'username'", 'username', "' AND `password`='", 'password', "'")): 
     window = Tk() 
     db.commit() 
     label_3 = Label(window, text="Du er nu logget ind!") 
     label_3.pack() 
    else: 
     db.commit() 
     print ("Login fejlede!") 

label = Label(root, text="Velkommen til mit log ind script!") 
db = MySQLdb.connect(host="localhost", 
        user="root", 
        db="users") 

query = db.cursor() 

loop = 'true' 
label_1 = Label(root, text="Username: ") 
label_2 = Label(root, text="Password: ") 
username = Entry(root) 
password = Entry(root, show='*') 
button_1 = Button(root, text="Log ind!", command=makeLoggedInWindow) 

label_1.pack() 
label_2.pack() 
username.pack() 
password.pack() 
button_1.pack() 

root.mainloop() 

能有人帮助?

+0

请张贴代码内联,而不是作为一个链接 – EdChum

+0

但我的代码是长 – AutKix

+0

请仔细阅读本:http://stackoverflow.com/help/mcve – EdChum

回答

-1

你缺少=username字段名。另外你为什么不使用Python命令替换为更清楚:

"SELECT * FROM USERS where username={0} AND password={1}".format(username,password) 
1

你回溯表明您使用的是旧repr语法 - 的`backticks`。而且你在这里提出的代码是不正确的。

的反引号没有工作在Python 2,但在Python 3

所有的一切不再,这种技术是很大的缺陷 - repr不能保证给SQL兼容输出;并且您将很容易受到SQL注入的影响。您应该使用SQL中的占位符代替查询:

query.execute("SELECT * FROM USERS where username = %s AND password = %s", 
    (username, password))