Strona 2 z 6
: 21 października 2011, 21:46
autor: Bastian
Spoko.
Kod: Zaznacz cały
CREATE FUNCTION update_passwd(varchar(40), varchar(40)) RETURNS integer AS '
DECLARE
myuser ALIAS FOR $1;
nowypass ALIAS FOR $2;
update_re integer;
tenuser varchar;
BEGIN
SELECT username INTO tenuser FROM public.mailbox WHERE username= myuser;
IF NOT FOUND THEN
update_re:=0;
RETURN update_re[B];[/B]
END IF;
UPDATE public.mailbox SET password=md5(nowypass) WHERE user=tenuser;
update_re:=1;
RETURN update_re;
END;' language 'plpgsql';
Niestety nie mam pod reka postgresa akturat zeby przetestować, więc testować musisz ty

: 24 października 2011, 08:53
autor: LordRuthwen
Funkcja przeszła, jak wysyłam zapytanie to niby przechodzi, ale coś mi to nie bardzo działa jak trzeba bo dalej się dostaję na starym haśle a nie na nowym.
Skrót hasła w bazie się nie zmienia.
: 24 października 2011, 09:48
autor: Bastian
Kod: Zaznacz cały
CREATE FUNCTION update_passwd(varchar(40), varchar(40)) RETURNS integer AS '
DECLARE
myuser ALIAS FOR $1;
nowypass ALIAS FOR $2;
update_re integer;
tenuser varchar;
BEGIN
SELECT public.username INTO tenuser FROM public.mailbox WHERE public.username= myuser;
IF NOT FOUND THEN
update_re:=0;
RETURN update_re;
END IF;
UPDATE public.mailbox SET public.password=md5(nowypass) WHERE public.user=tenuser;
update_re:=1;
RETURN update_re;
END;' language 'plpgsql';
: 24 października 2011, 09:59
autor: LordRuthwen
Kod: Zaznacz cały
2011-10-24 10:03:56 CEST ERROR: missing FROM-clause entry for table "public" at character 8
2011-10-24 10:03:56 CEST QUERY: SELECT public.username FROM public.mailbox WHERE public.username= $1
2011-10-24 10:03:56 CEST CONTEXT: PL/pgSQL function "update_passwd" line 8 at SQL statement
2011-10-24 10:03:56 CEST STATEMENT: SELECT update_passwd('lukasz@poczta.blabla', '$a;wjhiawgerghawi;areyhab')
Ale jak poprawię:
Kod: Zaznacz cały
SELECT FROM public.username INTO tenuser FROM public.mailbox WHERE public.username= myuser;
To mi pluje błędem:
Kod: Zaznacz cały
ERROR: syntax error at or near "FROM"
LINE 1: SELECT FROM public.username FROM public.mailbox WHERE public...
^
QUERY: SELECT FROM public.username FROM public.mailbox WHERE public.username= $1
CONTEXT: SQL statement in PL/PgSQL function "update_passwd" near line 8
: 24 października 2011, 10:09
autor: Bastian
Wykonaj z palca to polecenie:
Kod: Zaznacz cały
SELECT username INTO tenuser FROM public.mailbox WHERE username= <jakis uzytkownik>;
: 24 października 2011, 10:10
autor: Bastian
SELECT FROM public.username INTO tenuser FROM public.mailbox WHERE public.username= myuser;
A gdzie ja podaje takie polecenie?
: 24 października 2011, 10:17
autor: LordRuthwen
Nigdzie:
Kod: Zaznacz cały
missing FROM-clause entry for table "public" at character 8
Nie chciało przejść więc myślałem, że o to chodzi.
Proszę bardzo:
Kod: Zaznacz cały
Błąd SQL:
ERROR: column "lukasz" does not exist
LINE 1: ...e INTO tenuser FROM public.mailbox WHERE username=lukasz@...
^
W poleceniu:
SELECT username INTO tenuser FROM public.mailbox WHERE username=lukasz@poczta.blabla
: 24 października 2011, 10:34
autor: Bastian
Kod: Zaznacz cały
SELECT username INTO tenuser FROM public.mailbox WHERE username='lukasz@poczta.blabla'
: 24 października 2011, 10:48
autor: LordRuthwen
: 24 października 2011, 11:41
autor: Bastian
Kod: Zaznacz cały
DROP function update_passwd(varchar(40), varchar(40));
i jeszcze raz
Kod: Zaznacz cały
SELECT username INTO tenuser FROM public.mailbox WHERE username='lukasz@poczta.blabla'