我是 MySQL-python 连接器编码的新手,详情如下

I am a newbie to the MySQL-python connector coding, specifics given below

我需要将一个变量连接到我希望从 table:

中检索特定详细信息的搜索条件
purchase = input("Please enter your Transaction ID(Found in the format - Letter-Number-Letter-Letter-Number, like A9BH1): ")

这里,我需要'Purchase'作为

中的条件
  sql = "select * from 4wps where T_ID = "
  cursor.execute(sql)
  result = cursor.fetchall()

我不知道如何在 'T_ID =' 之后将 'purchase' 输入到上面的示例中。我已经关注了一个朋友的代码,但他显然是从某处复制的。

我在印度 CBSE 排名第 12,这是一个项目,因此我不能使用任何高级的东西。

只需这样添加:

sql = "select * from 4wps where T_ID = '" + purchase + "'" 

如果您阅读 official docs,您可以(并且应该!)使用元组或字典将参数传递到您的查询中:

cursor.execute(operation, params=None, multi=False)

对于您的查询,您可以这样做。

sql = 'SELECT * FROM 4wps WHERE T_ID = %s'
cursor.execute(sql, (purchase,))

或者这样

sql = 'SELECT * FROM 4wps WHERE T_ID = %(tid)s'
params = {'tid': purchase}
cursor.execute(sql, params)

在这两种情况下,连接器都会将您的 purchase 变量的内容放入查询中,并会在必要时自动为字符串添加任何引号。使用这种技术通常是首选,因为它提供了一些针对 SQL 注入攻击的保护。

我不确定这是否可行,但想象一下如果用户输入以下内容:

Please enter your Transaction ID
(Found in the format - Letter-Number
-Letter-Letter-Number, like A9BH1): 
      (DROP TABLE 4wps)

也许你的数据table会被破坏。

另一个SQL注入的幽默例子是Bobby Tables which is explained again here