2011-03-05 67 views
4

thumbnailimage是BLOB字段,num1num2是Integer字段,其他字符是Str。並非在字符串格式化期間轉換的所有參數

我想插入二進制數據到MYSQL。但是,當這條線叫,錯誤發生。

cursor.execute("INSERT INTO image(num1, num2, filename, ext, thumbnail, image) VALUES(?, ?, ?, ?, ?, ?);" , (num1, num2, _name, _ext, _thumb, _image)) 

錯誤文本:不串轉換過程中的所有參數格式

如何解決呢?請教我。

+1

在http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_load-file – 2011-03-05 13:54:05

回答

5

如果您正在使用MySQLdb的嘗試:

cursor.execute(""" 
    INSERT INTO image 
    (num1, num2, filename, ext, thumbnail, image) VALUES 
    (%s, %s, %s, %s, %s, %s)""" , (num1, num2, _name, _ext, _thumb, _image)) 
+0

看看謝謝。我正在使用MySQLdb。這樣可以防止SQL注入? – moruru 2011-03-05 14:37:40

+0

@moruru:是的,使用SQL中的參數並將參數傳遞給'cursor.execute'有助於防止SQL注入。 – unutbu 2011-03-05 14:53:08

+0

如果_name的值爲''); DROP TABLE IMAGE; - 或類似的東西?這*仍*防止SQL注入? INSERT將失敗,但後續查詢會運行? – 2011-03-05 15:28:45

相關問題