Bug? Obaleni stringu do ` `
- Jan Mikeš
- Člen | 771
Jedna se o bug?
Tento jednoduchy kod vygeneruje
echo $this->getTable()->select("'asdf'")->getSql();
Vygeneruje
SELECT '`asdf`' FROM `table`
Proc tam sakrys jsou ty ` ` ? V drivejsi verzi nedelalo, jedna se o nezadouci chovani a BC break.
Verze 2.0.12 PHP 5.4
prohozeni apostrofu za uvozovky takto funguje
->select("'asdf'")
za ->select('"asdf"')
Editoval Lexi (21. 8. 2013 9:19)
- sodae
- Nette Evangelist | 250
není to bug. Použij Nette\Database\SqlLiteral
, jestli tam
chceš dát něco napevno. Takto se to chová, že chceš vložit název
něčeho (sloupce, tabulky).
echo $this->getTable()->select(new Nette\Database\SqlLiteral("'asdf'"))->getSql();
Editoval sodae (21. 8. 2013 13:22)
- jiri.pudil
- Nette Blogger | 1032
prohozeni apostrofu za uvozovky takto funguje
->select("'asdf'")
za->select('"asdf"')
To funguje proto, že třeba Postgres escapuje identifikátory právě pomocí double quotes. V MySQL se to sice chová jako string, ale není to úplně korektní a přenositelné řešení.
Editoval jiri.pudil (21. 8. 2013 14:24)
- hrach
- Člen | 1838
Min. rok se toto nemenilo, takze to BC break neni, respektive fix by byl dalsi BC break. (Kdovi z ceho updatoval… :D) Patricna issue k problemu, ktery zminuje jiri.pudil: https://github.com/…e/issues/819 a moje vetev (zatim bez PR) https://github.com/…e-delimiting