2013-10-27 1 views
1

Я изучаю SQL-инъекцию, и я столкнулся с SQL-запросом, который выглядит следующим образом.SQL-инъекция с использованием SubQuery Select in Insert Statement

Запрос 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

Ваш оператор select возвращает более 1 столбца.

Попробуйте

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 »? –