powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / unterminated dollar-quoted string
4 сообщений из 4, страница 1 из 1
unterminated dollar-quoted string
    #34381901
neoweb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
create or replace function select_login_all (text, text)
returns SETOF record as
'SELECT * FROM admin WHERE username=$1 AND password=$2 AND active=1'
language sql;

Запрос:
SELECT * from select_login_all($fUsername1, $password) as (username varchar, password varchar, created timestamp, modified timestamp, active smallint)

Два вопроса:
1 - при попытке селекта ошибка: Invalid query: ERROR: unterminated dollar-quoted string at or near "$f47c41cf$vuQp4qP8Hkhev3v3VFdwa1) as (username varchar, password varchar, created timestamp, modified timestamp, active smallint)" at character 50
В поле password - хеш пароля и там есть $. Как исправить? Нашел что-то про функции quote_literal - но ведь лишние слеши в этой строке мне тоже не нужны.
2 - Можно написать это же запрос как-то красивее?

п.с. Делается так, чтоб выдать пользователю права только на функцию.
...
Рейтинг: 0 / 0
unterminated dollar-quoted string
    #34382429
СергейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
neoweb
Запрос:
SELECT * from select_login_all($fUsername1, $password) as (username varchar, password varchar, created timestamp, modified timestamp, active smallint)

Два вопроса:
1 - при попытке селекта ошибка: Invalid query: ERROR: unterminated dollar-quoted string at or near "$f47c41cf$vuQp4qP8Hkhev3v3VFdwa1) as (username varchar, password varchar, created timestamp, modified timestamp, active smallint)" at character 50
В поле password - хеш пароля и там есть $. Как исправить? Нашел что-то про функции quote_literal - но ведь лишние слеши в этой строке мне тоже не нужны.


A v kavychki login i parol' ne probovali zakluchat' ? (esli vy uvereny, chto kavychek v username i parole net)

SELECT * from select_login_all('$fUsername1', '$password') as (username varchar, password varchar, created timestamp, modified timestamp, active smallint);

neoweb
2 - Можно написать это же запрос как-то красивее?


Naprimer opredelit' functsiu tak:
Код: plaintext
1.
2.
3.
4.
create or replace function select_login_all (usern text, passw text, out created timestamp, out modified timestamp, out active int)
returns SETOF record as
'SELECT created, modified, active FROM admin WHERE username=$1 AND password=$2 AND active=1'
language sql;

i vyzyvat' ee tak:
SELECT * from select_login_all('$fUsername1', '$password') ;
...
Рейтинг: 0 / 0
unterminated dollar-quoted string
    #34382603
neoweb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. В этом разобрался.

еще вопросик:
Почему запросы не эквивалентны???

select * from table where username = quote_literal($1)
select * from table where username = $1

т.е. первый запрос не возвращает ничего, а второй работает нормально.
Пробовал не в контексте хп:

select * from table where username = quote_literal('admin@domain.com')
и
select * from table where username = 'admin@domain.com'
Результат такой же.
Что же делать, если мне нужно использовать quote_literal?
Спасибо.
...
Рейтинг: 0 / 0
unterminated dollar-quoted string
    #34383411
st_serg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
postgres=# select 'blabla', quote_literal('blabla');
 ?column? | quote_literal
----------+---------------
 blabla   | 'blabla'

quote_literal(string)
Return the given string suitably quoted to be used as a string literal in an SQL statement string

=>
Код: plaintext
1.
2.
strSQL := 'select * from tab where f = ' || quote_literal('blabla');
execute strSQL
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / unterminated dollar-quoted string
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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