Вы, вероятно, не можете достичь этого.
Как вы знаете, оператор INSERT не имеет набора результатов, даже если вы используете SQL-инъекцию.В лучшем случае вы можете заставить его выполнить SELECT как скалярный подзапрос.Нетрудно подделать ваш пример, чтобы выполнить следующее:
INSERT INTO users VALUES ('8675309', '' || (SELECT ...blah blah...) || '');
Но это все равно не вернет набор результатов, потому что INSERT никогда не имеет набора результатов.
Для этого вам потребуется выполнить второй запрос.Некоторые интерфейсы запросов поддерживают множественные запросы в одном вызове doQuery (), но это не всегда так (зависит от используемой вами базы данных и, возможно, некоторых параметров конфигурации).
INSERT INTO users VALUES (...whatever...);
SELECT * FROM secure_table WHERE (id = '8675309');
СВнедрение SQL, вы можете манипулировать SQL, но вы не можете манипулировать остальным кодом в приложении, которое запускает SQL.В приведенном вами примере приложение предназначено для выполнения запроса INSERT, а не INSERT, за которым следует SELECT.У приложения не будет причин извлекать результирующий набор после выполнения INSERT.
Трудно представить, как можно использовать только SQL-инъекцию, чтобы обмануть код, который вы показываете, при извлечении и отображении набора результатов.
Я не думаю, что можно использовать SQL-инъекцию для чтения данных, используя запрос без чтения.