在执行 SQL 语句之前,需将所有的字面量(例如字符串或数字)替换为占位符,然后将占位符替换为实际的值。这可以通过使用占位符(例如“?”或“:name”)而不是字面量来实现。以下是使用 Python 的示例代码:
import mysql.connector
# 建立数据库连接
cnx = mysql.connector.connect(user='user', password='password', host='127.0.0.1', database='mydatabase')
# 创建一个查询,并指定占位符来避免使用字面量
query = ("SELECT name, age FROM employee WHERE department = %s")
# 执行查询,传递实际值作为参数进行替换
department = "sales"
cursor = cnx.cursor()
cursor.execute(query, (department,))
# 处理查询结果
for (name, age) in cursor:
print("{} is {} years old".format(name, age))
# 关闭数据库连接
cursor.close()
cnx.close()
在此示例中,查询中的字符串“sales”被替换为占位符“%s”。执行查询时,实际字符串“sales”被传递并替换占位符。这种方法可避免 SQL 注入攻击,并提高代码的安全性。