Nette\Database vkládá nadbytečné mysqlí escapovatko
- patriksima
- Člen | 58
h4kuna napsal(a):
Zdravím stáhl jsem nette 2.0.2 a děje se mi při tvoření sqlka ze mi nesmyslne vklada `.
Příklad:
<?php $this->db->select('DATE_FORMAT(NOW(), "%d.%m.%Y")')->fetch(); // SELECT DATE_FORMAT(NOW(), "%`d`.%`m`.%Y") což není dobře ?>
potvrzuji, mám teď stejný problém. je nějaké řešení?
- xlilien
- Člen | 27
Potvrzuji, identický problém.
Zajímavé je, že escapování navíc proběhne pouze u písmen, která jsou malá – %Y je v pohodě, %d ne.
Zadal jsem issue na github, snad je to v pořádku… https://github.com/…e/issues/819
- Caine
- Člen | 216
Snazi se to escapovat vsechno, co vypada jako identifikator (nazev tabulky, sloupce, atd), a je malym pismem a vetsinou to funguje, ale nekdy holt ne. Dalo by se to vyresit pouzitim SqlLiteral, jenze to funguje nanejvys u where. Poslal jsem opravu (#813), kde by slo pouzit SqlLiteral nejen u podminek, ale i jinde. Otazka je, kdy a jestli vubec se to do NDB dostane.
- David Matějka
- Moderator | 6445
na tohle by mohl fungovat trik, ktery jsem parkrat pouzil, neco jako
$selection->select('DATE_FORMAT(NOW(), ?)')->where("1", '%d.%m.%Y');
v selectu pouziju parametr, kterej tam protlacim skrz where :)
samozrejme nejlepsi by byla nejaka dobra podpora pdo parametru..
- enumag
- Člen | 2118
@MW: Vypadá to tak, že @hrach má v plánu to řešit, ale nikdo neví, kdy se k tomu dostane. Navíc záleží na něm čemu z té roadmap dá jakou prioritu. Můžeš se pokusit to urychlit úpravou pull requestu od @Caine dle hrachových připomínek.