1

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");

これを実行すると、これを実行すると取得error code: 1241.されます。私は何を間違っていますか?

4

1 に答える 1

1

select ステートメントは複数の列を返します。

試す

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

于 2013-10-27T17:21:20.547 に答える