MySQL & Python: SQL 语句中没有使用所有参数
MySQL & Python: Not all parameters were used in the SQL statement
我使用 MySQL 创建了以下数据库:
CREATE TABLE tutors (
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(320) NOT NULL,
description VARCHAR(400) NOT NULL,
image VARCHAR(150) NOT NULL,
applyDate DATE NOT NULL)
其中图像列存储我在文件系统中存储的图像的绝对路径。
但是,当我尝试插入用户输入的数据时,例如
arguments = ("Name", "a@gmail.com", "desc", "C:\Users\path\to\image.png", "2020-08-23")
使用 Python 和代码
cursor.execute("INSERT INTO tutors (name, email, description, image, applyDate) VALUES (?, ?, ?, ?, ?)", arguments)
conn.commit()
它给我以下错误:
mysql.connector.errors.ProgrammingError: Not all parameters were used in the SQL statement.
当我用 %s
替换每个 ?
时它起作用,但我读到 %s
容易受到 SQL 注入攻击,所以我宁愿尽可能远离它。有什么原因 ?
不工作吗?
?
占位符仅适用于准备好的语句游标,例如 cursor = conn.cursor(prepared=True)
.
如果您不想或不需要使用准备好的语句,请使用 %s
作为占位符。这是安全的,因为它们的值在执行查询之前被转义和引用。
我使用 MySQL 创建了以下数据库:
CREATE TABLE tutors (
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(320) NOT NULL,
description VARCHAR(400) NOT NULL,
image VARCHAR(150) NOT NULL,
applyDate DATE NOT NULL)
其中图像列存储我在文件系统中存储的图像的绝对路径。
但是,当我尝试插入用户输入的数据时,例如
arguments = ("Name", "a@gmail.com", "desc", "C:\Users\path\to\image.png", "2020-08-23")
使用 Python 和代码
cursor.execute("INSERT INTO tutors (name, email, description, image, applyDate) VALUES (?, ?, ?, ?, ?)", arguments)
conn.commit()
它给我以下错误:
mysql.connector.errors.ProgrammingError: Not all parameters were used in the SQL statement.
当我用 %s
替换每个 ?
时它起作用,但我读到 %s
容易受到 SQL 注入攻击,所以我宁愿尽可能远离它。有什么原因 ?
不工作吗?
?
占位符仅适用于准备好的语句游标,例如 cursor = conn.cursor(prepared=True)
.
如果您不想或不需要使用准备好的语句,请使用 %s
作为占位符。这是安全的,因为它们的值在执行查询之前被转义和引用。