Escapování v Nette Database vs. backjoin znak
- iskejp
- Člen | 41
Ahoj a díky Edo za reakci (v CZ :o)).
Ano, řetězec je hodnota pro vyhledání. Nicméně šlo mi spíše o obecnou rovinu, zda existuje nějaká možnost v NDB vypnout escape. V konkrétním případě jsem to nakonec nějak obešel.
Zkoušel jsem předávat hodnotu v poli i v řetězci a vždy dojde na úpravu vstupní hodnoty.
- Martk
- Člen | 661
Třída pro položení dotazu bez escapování Nette\Database\SqlLiteral
Příklad:
$database->table('table')->('column', new SqlLiteral('dotaz'));
- n.u.r.v.
- Člen | 485
Ahoj, můžete mi prosím poradit, jak zapsat tento dotaz tak, aby se neprovádělo escapování?
SELECT DATE_FORMAT(DATE_ACTIVATE,'%Y/%m/%d %H:%i') AS DATE_ACTIVATE, DATE_FORMAT(DATE_CLOSE,'%Y/%m/%d %H:%i') AS DATE_CLOSE FROM survey WHERE ID = 1;
Zkusil jsem toto:
return $this->dbTests->table('survey')->select(new Nette\Database\SqlLiteral("DATE_FORMAT(DATE_ACTIVATE,'%Y/%m/%d %H:%i')")." AS DATE_ACTIVATE, ".new Nette\Database\SqlLiteral("DATE_FORMAT(DATE_CLOSE,'%Y/%m/%d %H:%i')")." AS DATE_CLOSE")->where("ID =? AND HASH =?", $id, $hash)->fetch();
Ale pořád mi to escapuje ten zápis formátu
Díky
Edit – zatím jsem to udělal ručně přes queryArgs – to funguje
Editoval n.u.r.v. (17. 10. 2014 14:15)
- ondrej256
- Člen | 188
n.u.r.v. napsal(a):
Ahoj, můžete mi prosím poradit, jak zapsat tento dotaz tak, aby se neprovádělo escapování?
SELECT DATE_FORMAT(DATE_ACTIVATE,'%Y/%m/%d %H:%i') AS DATE_ACTIVATE, DATE_FORMAT(DATE_CLOSE,'%Y/%m/%d %H:%i') AS DATE_CLOSE FROM survey WHERE ID = 1;
Zkusil jsem toto:
return $this->dbTests->table('survey')->select(new Nette\Database\SqlLiteral("DATE_FORMAT(DATE_ACTIVATE,'%Y/%m/%d %H:%i')")." AS DATE_ACTIVATE, ".new Nette\Database\SqlLiteral("DATE_FORMAT(DATE_CLOSE,'%Y/%m/%d %H:%i')")." AS DATE_CLOSE")->where("ID =? AND HASH =?", $id, $hash)->fetch();
Ale pořád mi to escapuje ten zápis formátu
Díky
Edit – zatím jsem to udělal ručně přes queryArgs – to funguje
Právě zápasím se stejným problémem :-( pracuju s datagridem a tam to ručně neudělám
- David Matějka
- Moderator | 6445
nejak takhle
->select("DATE_FORMAT(date, ?)", '%Y/%m/%d %H:%i')
vsechny hodnoty je nutno predavat jako parametry