为什么我得到了uid的价值
在flask调试控制台中使用时
<input id="userId" name="userId" type="text" value= {{ un[usernumber][0] }} >
但是在使用mysql.connection.cursor()?
时会出错请帮我弄清楚为什么会发生并修复它。
cur = mysql.connection.cursor()
cur.execute(
"UPDATE User SET email='" +
form.email.data +
"', phone='" +
form.phone.data +
"', mphone='" +
form.mphone.data +
"', status='" +
form.status.data +
#"' WHERE userId='12' ") # ok
"' WHERE userId='" + uid + "' ")
# TypeError: int() argument must be a string or a number,
# not 'NoneType'
# and IOError: [Errno 32] Broken pipe
rv = cur.fetchall()
mysql.connection.commit()
return 'ok'
调试控制台:
#right,我们得到了所需的值
* Restarting with stat
* Debugger is active!
* Debugger pin code: ...-...-...
uid: 2
127.0.0.1 - - [09/Jun/2016 17:20:28] "GET /edit?i=1 HTTP/1.1" 200 -
答案 0 :(得分:0)
你一定不能这样做。有关原因,请参阅Little Jonny Tables。
请使用旨在阻止此类攻击的数据库API的工具。除了安全优势之外,您的代码将更简单,更容易理解。
cur.execute(
"UPDATE User SET email=%s, phone=%s, mphone=%s, status=%s WHERE userId=%s",
(form.email.data, form.phone.data, form.mphone.data, form.status.data, uid)
)