tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

Jaký bude vývoj modifikátorů %sql a %SQL?

před 8 lety

Milo
Nette Core | 1119

Ahoj,
jakým směrem se budou vyvýjet modifikátory %sql a %SQL? Ve zdrojácích to je sice uvedeno celkem jasně, ale to přináší BC break, tak jestli s tím do budoucna počítat.

A ještě otázka k modifikátoru %sql. U Postgresu „předělává“ uvozovky na apostrofy. Fičura, nebo bug?

$sql = '"col1" = "col2"';
dibi::test( 'SELECT * FROM [table] WHERE %sql', $sql );
//           SELECT * FROM "table" WHERE '$col1' = '$col2'

Díky

před 8 lety

David Grudl
Nette Core | 6806

Rozdíl je právě v té interpretaci např. řetězců. Takže %sql předělává uvozovky apod, %SQL nepředělává nic. Zdá se mi, že to není moc intuitivní, takže bych chování asi změnil tak, že ani %sql nebude nic předělávat.

před 8 lety

Milo
Nette Core | 1119

Také mi to přijde neintuitivní. Escapování názvů uzavřených v [ ] ještě celkem ano, ale záměna uvozovek už ne. Zaskočilo mě to při psaní jedné komponenty využívající dibi. Na MySQL fungovala, na PostreSQL už ne.

$where = $db->translate('%n = %s', $sloupec, $hodnota );
...
dibi::query('SELECT * FROM [tabulka] WHERE %sql', $where);
// Na MySQL OK na PostgreSQL ne

Po předělání na %SQL zase někde nefungovalo escapování názvů. Jestli nemá změna přijít brzo, nebylo by dobré dát to do Quick startu?