0

我现在有两个 .cgi 脚本。我试图让用户在一个网站(第一个 cgi 脚本)上输入关键字,然后它将该数据发送到下一个 cgi 脚本。它目前将其发送到下一页很好,但我还想将用户输入的信息保存到名为“keywords”的 MySQL 表中。我很难弄清楚如何做到这一点。这是我的第一个提示用户输入关键字的 cgi 脚本:

#!/usr/bin/env python
import cgi
import cgitb
cgitb.enable()

form = cgi.FieldStorage()
keyword = form.getvalue('keyword')

print 'Content-type: text/html\r\n\r'
print '<html>'
print '<h1>Please enter a keyword of your choice</h1>'
print '<form action="results.cgi" method="post">'
print 'Keyword: <input type="text" name="keyword">  <br />'
print '<input type="submit" value="Submit" />'
print '</form>'
print '</html>'

这是我的第二个 .cgi 文件。在此,我试图打印从上一页输入的关键字(工作正常)并将其发送并将其保存到我的 mysql 表中(这就是问题所在):

cgitb.enable()

form = cgi.FieldStorage()

keyword = form.getvalue('keyword')

print 'Content-type: text/html\r\n\r'
print '<html>'
print keyword
print '</html>'

db = MySQLdb.connect(host="", user="",   passwd="", db="")
cursor = db.cursor()
sql = """INSERT INTO keywords(keywords) VALUES (keywords)"""
cursor.execute(sql)
cursor.fetchall()
db.close()

基本上我一般来说是 MySQL 的新手,我很确定这归结为我的 mysql 代码都搞砸了并且做我想做的事。它不会获取任何错误,只是不会向表中添加任何内容。

4

1 回答 1

1

您没有将任何参数传递给该cursor.execute方法。

你需要:

sql = "INSERT INTO keywords (keywords) VALUES (%s)"
cursor.execute(sql, keyword)

这应该可以工作,假设您的表被调用keywords并包含一个名为keywords.

您可以查看MySQLdb用户指南以获取更多信息。


请注意,这个简单的应用程序暴露在 Web 应用程序可能易受攻击的大多数安全漏洞中(SQL 注入除外),其中特别包括XSS 攻击

于 2012-12-12T03:20:07.063 回答