Nette\Database vkládá nadbytečné mysqlí escapovatko

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
h4kuna
Backer | 740
+
0
-

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
?>
patriksima
Člen | 58
+
0
-

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
+
0
-

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
+
0
-

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.

enumag
Člen | 2118
+
0
-

@Caine: Doufám, že se to do Nette dostane. Btw. měl by sis zjistit proč travis hlásí, že ti selhávají testy.

Caine
Člen | 216
+
0
-

Nejsou tam testy pro postgre, na localu mi to projde bez chyb (mysql), protoze postgre to preskakuje, a jelikoz s postgre nemam zkusenosti, tezko na to muzu psat testy:)

Editoval Caine (14. 10. 2012 21:57)

Semik
Backer | 135
+
0
-

Oživuji

David Matějka
Moderator | 6445
+
0
-

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..

MW
Člen | 615
+
0
-

Jak to prosim vypada?

enumag
Člen | 2118
+
0
-

@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.

MW
Člen | 615
+
0
-

Diky za info.
Ja to narychlo poresil ->query(…), ale to nebude idealni reseni :-(