我使用 MySQL 創(chuàng)建了以下數(shù)據(jù)庫(kù):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)其中 image 列存儲(chǔ)我存儲(chǔ)在文件系統(tǒng)中的圖像的絕對(duì)路徑。但是,當(dāng)我嘗試插入用戶(hù)輸入的數(shù)據(jù)時(shí),例如arguments = ("Name", "a@gmail.com", "desc", "C:\\Users\\path\\to\\image.png", "2020-08-23")在代碼中使用 Pythoncursor.execute("INSERT INTO tutors (name, email, description, image, applyDate) VALUES (?, ?, ?, ?, ?)", arguments)conn.commit()它給了我以下錯(cuò)誤:mysql.connector.errors.ProgrammingError: Not all parameters were used in the SQL statement.當(dāng)我將每個(gè)替換為 時(shí)它會(huì)起作用?,%s但我讀到它%s容易受到 SQL 注入攻擊,所以如果可能的話我寧愿遠(yuǎn)離它。?有沒(méi)有不工作的原因?
1 回答

jeck貓
TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊
占位?
符僅適用于準(zhǔn)備好的語(yǔ)句游標(biāo),例如cursor = conn.cursor(prepared=True)
.
如果您不想或不需要使用準(zhǔn)備好的語(yǔ)句,請(qǐng)使用%s
as 占位符。這是安全的,因?yàn)樗鼈兊闹翟趫?zhí)行查詢(xún)之前被轉(zhuǎn)義和引用。
添加回答
舉報(bào)
0/150
提交
取消