Odkazy: dibi | API reference

Forum: [česky] [english]

dibi fórum

tiny ‘n’ smart
database layer

Nejste přihlášen(a)

#1 před rokem

westrem
dibi guru
Registrovaný: 13. 1. 2009
Příspěvky: 425

Maybe bug – DibiDataSource

Zdravim,

dnes som v dibi (verzia 1.2) narazil na jednu dost „nepeknu“ vlastnost objektu DibiDataSource, ktora je primarne myslena ako feature, ale moze sa prejavit ako chyba dibi.

Ide o to, ze DataSource urcuje ci mu bolo predane SQL alebo iba nazov tabulky na zaklade vyskytu medzery v premennej $sql. Myslienka pekna a v podstate sa zda byt spravna ale moze dojst k pripadom ked je predane SQL a nie je v nom medzera!

Priklad je uplne trivialny, staci ked clovek dodrziava urcite konvencie a snazi sa pisat citatelny kod a hned je v „pasti“:

SELECT
        [name],
        [surname]
FROM
        [users]

Toto je pekne strukturovana query neobsahujuca ziadne medzery (na odsadenie boli pouzite taby).

Tento vstup vsak DataSource vyhodnotil ako tablename, escapeoval ho (tzn stlpce boli viacnasobne escaped) a samozrejme pri dotaze ako je napriklad getTotalCount() padlo samotne sql a MySQL zahlasilo chybu v syntaxi.

Nastastie mi najdenie chyby trvalo len „polhodiny“ a riesenie je jednoduche, prepisat query tak aby obsahovala medzeru.

Osobne si vsak myslim, ze by bolo lepsie testovat v konstruktore DataSource vyskyt na whitespace vseobecne ako len na medzeru.

Na zaver len tolko, ze radsej som tento radoby problem postol sem na forum, kedze v IssueTrackeri by som ho asi efektivne nevedel kategorizovat.


Nette 2.0 alpha2 Namespaced for PHP 5.3 // http://westrem.posterous.com

 

#2 před rokem

David Grudl
Administrator
Registrovaný: 8. 2. 2005
Příspěvky: 5548

Re: Maybe bug – DibiDataSource

fixed

(díky za vyčerpávající popis!)

 

Zápatí