sql syntaxe pro PDO nebo Nette?

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

Zdravim, zacinam s db a mam v tom trochu gulas. Zde v tutorialech jsem nasel neco jako ze pri SELECT do db se dava misto promene otaznik a pak se da promena za carku, napr:

('SELECT user WHERE id=?,$id')

Ale kdyz se koukam na netu na prikaz SELECT vsude je neco jako

('SELECT user WHERE id='.$id)

Moc v tom nevidim rozdil, tak co mam pouzivat?

Pak jsem take videl ze jdou data UPDATEovat tak ze se tam strci pole, ale zase nic uplneho. Je to specialita PDO nebo Nette nebo jde o standardni SQL? A kde bych k tomu nasel dokumentaci? Diky

jtousek
Člen | 951
+
0
-

První případ jsi uvedl trochu špatně, má to být takhle:

('SELECT user WHERE id=?', $id)

A teď k rozdílům. První příklad předá $id jako samostatný parametr, díky tomu pak Nette\Database samo řeší escapování a podobné věci, protože si ten paramert může různě upravit než ho vloží do samotného SQL dotazu.

Druhý případ použije prachobyčejné spojování řetězců a natvrdo přilepí $id k tomu selectu, což je špatně z mnoha důvodů. První a nejdůležitější důvod je, že podobný zápis snadno vytváří bezpečnostní díru zvlášť pokud $id bereš z parametrů jako třeba $_GET[‚id‘] – nemůžeš si být jistý zda je tam číslo. Podobný útok je tuším známý jako SQL injection.

Pokud jde o UPDATE, myslím, že jde o specialitu Nette.

EDIT: Používej to první. ;)

Editoval jtousek (10. 1. 2011 21:46)

joseff
Člen | 233
+
0
-

Jo děkuji za rychlou odpoved, takze ten select je normalni SQL? proc ho nemuzu nikde poradne vygooglit a vsude jsou ty ¨spatne priklady¨ ? Ptam se proste na to zda neni nekde pekna dokumentace na spravne kladene SQL dotazy v nette. Dik

Tharos
Člen | 1030
+
0
-

Preprocessor v Nette\Database prakticky vychází z dibi. Když si projdeš, jak se skládají dotazy v dibi, pak nastuduješ, jak se pracuje s PDO a uděláš si z toho určitý průnik, dostaneš to, co hledáš. :)

Bohužel dokumentace k Nette\Database ještě není kompletní, ale možná by ti pomohl i její současný koncept.

Editoval Tharos (10. 1. 2011 22:14)