我只是尝试在HTML中插入从表单中提取的两个值。使用Flask和mysql.connector
这是我的index.html:
<h1>Simple Login Form</h1>
<form action="/signup" method="post">
<input type="text" name="username" required/>
<input type="password" name="password" required/>
<input type="submit"/> </form>
和我在python(app.py)中的行:
@app.route('/signup', methods=["POST"])
def signup():
username = str(request.form["username"])
password = str(request.form["password"])
cursor = mydb.cursor()
cursor.execute("INSERT INTO users (username, password) VALUES({},{})".format(username, password))
#cursor.execute("INSERT INTO users (username, password) VALUES('test','test')")
mydb.commit()
无论出于什么原因,我在执行第一个游标时会出现内部服务器错误,但“#”游标代码可以正常工作...请问谁能告诉我,我哪里出了问题。
你的价值没有被引用。将格式化的字符串放入引号中,或者,更好的是,使用绑定变量和占位符来安全地执行它:
cursor.execute("INSERT INTO users (username, password) VALUES(:username, :password)", [username, password])
有关更多信息,请参阅https://cx-oracle.readthedocs.io/en/latest/userguide/bind.html。
它终于起作用了,就像改变一样简单:
cursor.execute("INSERT INTO users (username, password) VALUES({},{})".format(username, password))
致:
cursor.execute("INSERT INTO users (username, password) VALUES('{}','{}')".format(username, password))
只需将{}、{}更改为“{}”、“{}”
可悲的是,没有其他的方法对我有效,只有这一个给了我我需要的结果。
谢谢迈克·斯科特