2013-10-27 54 views
1

我正在學習SQL注入,並且遇到了類似於以下內容的SQL查詢。使用子查詢進行SQL注入在插入語句中選擇

SQL查詢看起來像:

INSERT INTO documents (name, filename, mimetype, sessid) VALUES ("name", "filename", "mimetype", "sessid"); 

我想要做的事,如:

INSERT INTO documents (name, filename, mimetype, sessid) VALUES ((SELECT * FROM level8.documents), "filename", "mimetype", "sessid"); 

甚至

INSERT INTO documents (name, filename, mimetype, sessid) VALUES ((SELECT * FROM level8.documents), "filename", "mimetype", "sessid"); 

當我運行此我得到當我運行這個。我究竟做錯了什麼?

+0

我確定還有一條消息。 – usr

+0

@usr什麼?我不明白。 –

+0

每個錯誤都應該附帶一條消息 –

回答

0

您的選擇語句返回多個列。

嘗試

INSERT INTO documents (name, filename, mimetype, sessid) 
VALUES ((SELECT GROUP_CONCAT(names of all your columns) FROM 
level8.documents), "filename", "mimetype", "sessid"); 

瞭解更多關於子查詢的錯誤在這裏。

http://dev.mysql.com/doc/refman/5.6/en/subquery-errors.html

+0

我得到一個錯誤1093(ER_UPDATE_TABLE_USED),因爲我插入到表我也選擇了一切。 –

+1

然後,可能會使用您創建的臨時表 - 插入文檔中的所有內容 - 運行查詢 - 刪除臨時表 –

+0

如果我想放棄「SELECT @@ VERSION」到「name」位置,該怎麼辦? –