Oznámení
Omlouváme se, provoz fóra byl ukončen
Chybné escapování vnořeného selectu
Upozornění: Tohle vlákno je hodně staré.
před 7 lety
- 2bfree
- Člen | 245
Vytvořil jsem následující php dotaz
$this->dibi
->select('unnest([a.friends])')->as('fb_uid')
->from('[schema.tabulka]')->as('a')
->where('[a.fb_uid] = %s','123456789')->test();
a dibi pro PostgreSQL správně vrátilo
/--sql
SELECT unnest(„a“.„friends“) AS „fb_uid“
FROM „schema“.„tabulka“ AS „a“
WHERE „a“.„fb_uid“ = ‚123456789‘
\--
Jakmile jsem však dle návodu znořil select, najednou to jakoby zapomnělo na postgre a začalo escapovat apostrofy
$this->dibi
->select(
$this->dibi
->select('unnest([a.friends])')->as('fb_uid')
->from('[schema.tabulka]')->as('a')
->where('[a.fb_uid] = %s','123456789')
)->test();
a vysledek
/--sql
SELECT (
SELECT unnest(‚a‘.‚friends‘) AS ‚fb_uid‘
FROM ‚schema‘.‚tabulka‘ AS ‚a‘
WHERE ‚a‘.‚fb_uid‘ = ‚123456789‘)
\--
před 7 lety
- 2bfree
- Člen | 245
Chyba bude pravděpodobně v DibiTranslator.php v části
case 'sql': // preserve as dibi-SQL (TODO: leave only %ex)
case 'SQL': // preserve as real SQL (TODO: rename to %sql)
Tedy dočasný workaround je díky nezdokumentovanému %SQL n8sledovný:
$this->dibi
->select('%SQL',$this->dibi
->select('unnest([a.friends])')->as('fb_uid')
->from('[schema.tabulka]')->as('a')
->where('[a.fb_uid] = %s','123456789')->__toString()
)->test();
Editoval 2bfree (9. 5. 2012 13:05)