powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / php и Postgresql dblink
6 сообщений из 6, страница 1 из 1
php и Postgresql dblink
    #39877474
IvanC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, уважаемые форумчане! Снова обращаюсь к Вам с вопросом, об который уже сломал голову! Пишу на PHP скрипт, который должен вставлять в таблицу на удаленном сервере SELECT из моего сервера. Курил мануал на dblink, но там все в банальных примерах описано, которые работают и у меня без проблем, но при передаче параметров из PHP в SQL он начинает ругаться:
Код: sql
1.
PHP Warning:  pg_query(): Query failed: ERROR:  syntax error at or near 


на ' в строке SQL
Код: php
1.
pg_query($cn, "INSERT INTO sometable SELECT * FROM dblink('".connection_string."', 'SELECT filed1, field2, 'some_data' FROM table Where field1='"."some_value"."'') as tbl(.....)";


И получаю ошибку в итоге. Как их заэкранировать? Или что я делаю не так? Без условий все работает.
...
Рейтинг: 0 / 0
php и Postgresql dblink
    #39877606
KinsT_UA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IvanC, возможно ответ будет не совсем по теме + в PHP я не силен...
НО возможно стоит всю эту красоту оформить в теле хранимой процедуры, а из PHP просто передавать параметры хранимки?
Т.о. вся логика работы с dblink будет инкапсулирована в ХП внутри БД.
...
Рейтинг: 0 / 0
php и Postgresql dblink
    #39877698
IvanC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Буду городить тогда, если вариантов нет.
...
Рейтинг: 0 / 0
php и Postgresql dblink
    #39877756
IvanC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оформил я хранимую процедуру, запускаю и опять syntax error at or near... Сейчас уже ругается на всякие символы типа * и . уже внутри входных параметров, несмотря на то, что они в ' '.
...
Рейтинг: 0 / 0
php и Postgresql dblink
    #39877763
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
берём php:
Код: php
1.
2.
3.
4.
php -a
php > const connection_string = 'some';
php > echo "INSERT INTO sometable SELECT * FROM dblink('".connection_string."', 'SELECT filed1, field2, 'some_data' FROM table Where field1='"."some_value"."'') as tbl(.....)";
INSERT INTO sometable SELECT * FROM dblink('some', 'SELECT filed1, field2, 'some_data' FROM table Where field1='some_value'') as tbl(.....)


Смотрим внимательно на запрос.
Итак, спрашивается: почему СУБД не должна возмущаться таким небрежным синтаксисом? Должна и будет. Второй аргумент функции dblink должен быть строкой - вот будьте любезны как нормальный строковой литерал и оформить. Экранированием, как dollar-quotes или format'ом - способов много. Отдельно не забудьте подумать о корректной передаче параметра.
...
Рейтинг: 0 / 0
php и Postgresql dblink
    #39878070
IvanC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оформил переменные строками, все заработало. Спасибо!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / php и Postgresql dblink
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]