Odkazy: dibi | API reference

Forum: [česky] [english]

dibi fórum

tiny ‘n’ smart
database layer

Nejste přihlášen(a)

#1 před rokem

slapo
Člen
Registrovaný: 16. 7. 2009
Příspěvky: 24

SELECT z funkcie s definovaním dátových typov parametrov v PostgreSQL

Zdravím,

dá sa nejako dibi naznačiť, aby brala pretypovanie v PostgreSQL bez toho, aby sa ho pokúšala preložiť?
Pokúšal som sa to nájsť tu na fóre aj v dokumentácii, ale nenašiel som nič, čo by sa týkalo podobného problému.

Príklad query:

SELECT
        id_product,
        name,
        description,
        price
FROM
        fx_get_product_list(%f, %s::character varying, %i, %s::character varying, %i, %s::character varying)
;

Ak sa pokúsim query vyššie použiť, vznikne výnimka:

Missing substitution for '' expression.

Robí mi to vo verzii 1.2 aj dnes stiahnutej 1.3-dev.

Aspoň tipy by boli vítané.

Ďakujem.

Editoval slapo (21. 6. 2010 16:19)

 

#2 před rokem

PetrP
Moderator
Registrovaný: 15. 7. 2008
Příspěvky: 657

Re: SELECT z funkcie s definovaním dátových typov parametrov v PostgreSQL

Problém je s dvojtečkou. Bere se jako substituce.

Je to už hlášený problém. Zkusil jsem přidat možnost escapování pomocí \: Uvidíme co na to david až se vrátí.

Prozatím to můžeš rychle vyřešit tak že si přidáš prázdnou substituci která ti vrátí '':

dibi::addSubst('','');

nebo odstranením vyhazování chyb při neexistující substituci:

dibi::setSubstFallback(function ($expr) {
        return $expr;
});

nebo volat čisté sql (což je možná pro tebe nejlepší řešení):

dibi::nativeQuery('...');

Editoval PetrP (23. 6. 2010 14:49)

 

#3 před rokem

slapo
Člen
Registrovaný: 16. 7. 2009
Příspěvky: 24

Re: SELECT z funkcie s definovaním dátových typov parametrov v PostgreSQL

Ďakujem, začal som používať metódu nativeQuery a vlastnú na escapovanie údajov.
Zdá sa, že zatiaľ to lepšie s dibi nepôjde.

 

#4 před rokem

PetrP
Moderator
Registrovaný: 15. 7. 2008
Příspěvky: 657

Re: SELECT z funkcie s definovaním dátových typov parametrov v PostgreSQL

Escapovat můžeš takto:

dibi::getConnection()->getDriver()->escape('foo', dibi::IDENTIFIER);
dibi::getConnection()->getDriver()->escape('bar', dibi::TEXT);
// atd

 

#5 před rokem

slapo
Člen
Registrovaný: 16. 7. 2009
Příspěvky: 24

Re: SELECT z funkcie s definovaním dátových typov parametrov v PostgreSQL

PetrP napsal(a):

Escapovat můžeš takto:

dibi::getConnection()->getDriver()->escape('foo', dibi::IDENTIFIER);
dibi::getConnection()->getDriver()->escape('bar', dibi::TEXT);
// atd

Ďakujem :)

 

Zápatí