Вы можете извлечь параметры с помощью регулярного выражения '(.*?)'.*?'(.*?)'
. Затем вы должны использовать подстановку параметров в вашем запросе SQL, не используйте простую замену строк.
ОБНОВЛЕНО
Почему вы не хотите использовать простую замену строки для формирования SQL запроса? Потому что вы подвергаетесь хакерской атаке SQL инъекция . Предположим, что кто-то предоставил вам следующий ввод:
What is the id where we have '\' as company name and ' OR 1=1;' as the device type?
Теперь у вас есть две совпадающие группы символов между апострофами:
group 1: a single backslash character
group 2: a string ' OR 1=1;'
После подстановки в выходную строку вы получите
select * from DIM_DEVICE_TYPE where COMPANY_NAME = '\' and DEVICE_TYPE = ' OR 1=1;'
Что будет дальше? Например, MySQL рассматривает обратную косую черту sh перед апострофом как escape-символ, поэтому он будет рассматривать этот выбор как поиск компании с очень странным именем ' and DEVICE_TYPE =
(да, название компании начинается с апостроф), и этот поиск объединяется с условием ИЛИ 1 = 1. Поскольку условие 1 = 1 всегда выполняется, все условие поиска выполняется, и вы получите полный список всех записей в вашей таблице DIM_DEVICE_TYPE.