Я начинаю работать в SQL, и у меня возникли проблемы со специальными символами, такими как скобки и звездочки в пользовательских данных. До сих пор я в основном использовал множество специальных методов избавления от этих персонажей, и они работают достаточно хорошо. Основываясь на том, что я прочитал, я думаю, что параметризованные запросы могут быть более систематическим способом обойти некоторые из проблем, которые у меня есть.Выберите столбец другой строки в параметризованном выражении
Я следующий запрос:
insert into midstep (street)(select street from addresses limit 10)
Колонку улица адреса таблицы имеет много скобках, звездочки и т.д. выше работы кода, как и ожидалось. То, что я хочу сделать что-то вроде этого:
prepare midstreet (text) AS insert into midstep (street)(select $1 from addresses limit 10);
execute midstreet (street from addresses);
Однако, когда я вхожу в этом коде я получаю следующее сообщение об ошибке:
ERROR: syntax error at or near "from"
SQL state: 42601
Character: 29
Я пробовал кучу вариаций этого кода и прочитайте документацию по Prepare и Execute, но всегда получайте сообщения об ошибках. Любая помощь приветствуется!
EDIT: Я забыл упомянуть, я использую postgresql 9.3, а мой os - Ubuntu. Пожалуйста, спросите, нужна ли вам дополнительная информация, чтобы помочь!
Если параметрирование - это не выход, что бы вы посоветовали избавиться от скобок и звездочек? Я буду передавать эти данные в геокодер, который не знает, как обращаться со скобками и звездочками. –
Когда вы запрашиваете внутри РСУБД, нет никакой опасности SQL-инъекции. SQL-инъекция является возможной угрозой, когда вы запрашиваете что-то и добавляете параметры из-за СУРБД. Если у вас есть ценность, например, я голоден, вы не получите ошибок из-за «. Проблема заключается в том, когда вы создаете свой запрос, и результат выглядит следующим образом: select * от пользователей, где username = ''; удалить из пользователей; –