ugrás a tartalomhoz

prepared statements

lord · 2014. Már. 21. (P), 15.19
Sziasztok!

Gondoltam,megkérdezem,hátha tudtok valamit róla. Magyar leírást keresek a prepared statements témakörről. Hogy keressem egyáltalán? Van ennek valami magyar neve? Van magyar könyv ami leírja az alapoktól? Jól jönne valami leírás, hogy mi ez, hogy működik és hogy tudom a -nem objektum orientált- kódomban lecserélni az összes mysql dolgot erre. Gondolom,ilyen részletes leírás nem lesz, de bízom azért benne, hogy megértem a működését. Azért lenne jó magyar leírás,mert, bár tudok angolul,a php.net-es leírások felét nem értem a szakszavak miatt.
 
1

Ne a php manualban olvasd

BlaZe · 2014. Már. 21. (P), 21.58
Ne a php manualban olvasd, a prepared statements nem a php funkciója, hanem az adatbáziskezelőé, amihez a php is ad támogatást. A lényege, hogy paraméterezett, az adatbáziskezelő által előkészített lekérdezéseket tudsz vele megvalósítani. Hogy az utasítást hatékonyan tudja lefuttatni az adatbáziskezelő, optimalizációkat végez rajta futtatás előtt, elkészíti a tervet hogyan futtassa le az utasítást stb. Ezek időigényes dolgok, ezért adta magát, hogy a változó paraméterekkel többször is lefuttatott azonos lekérdezések esetében ezt a lépést csak egyszer kelljen megcsinálni. Erre jött létre a prepared statement (szakmai magyar fordítását én nem ismerem, de előkészített utasításnak lehet fordítani, ha már muszáj). Pár fontos tulajdonsággal rendelkezik:
- Ugyanazon lekérdezés többszöri futtatása esetén csökkenti a szükséges futásidőt
- Ha ugyanazt a lekérdezést csak egyszer futtatják, akkor növeli a szükséges futásidőt
- Véd az sql injection ellen, hiszen a futtatandó lekérdezést már ismeri az adatbáziskezelő, annak csak a paraméterei változhatnak

Nagyjából ennyi a lényege, a többi csak implementáció, hogy az adott adatbáziskezelő+programozási nyelv konstellációjában ezt hogyan kell használni.

Ha megy az angol, akkor inkább ezt nézd meg.
2

Köszönöm szépen.

lord · 2014. Már. 22. (Szo), 02.06
Mivel eléggé kezdő vagyok még, így jönnek a kérdések:
-Az ugyanazon lekérdezés többszöri futtatására lehet pl példa egy weboldalon a menü vagy a hírek lekérdezése?
-Elgondolkodtam, hogy létezik egy weboldalon olyan lekérdezés,ami csak egyszer fut le? Mármint mit jelent az egyszer? Egy felhasználóra értendő? Vagy az oldal egész "életére"?
-Ha nem objektum orientált programozást használok, van értelme prepared statementet tenni a kódba?
3

- Hacsak nem állandó

Hidvégi Gábor · 2014. Már. 22. (Szo), 09.44
- Hacsak nem állandó (perzisztens) kapcsolatot használsz az adatbázishoz (általában nem így van, mert macerás), a kérés beérkeztekor kapcsolódsz az adatbázishoz, majd a script lefutásának végén megszakítod a kapcsolatot. A prepared statementek akkor hoznak gyorsulást, ha ezen idő alatt le tudod őket legalább kétszer futtatni, ami szerintem meglehetősen ritka.
- Az objektumorientált programozás egy kódszervezési elv, paradigma, a prepared statementek pedig a lekérdezések összeállításának egy módja, így nincs közük egymáshoz.
4

A prepared statement adott

BlaZe · 2014. Már. 22. (Szo), 09.55
A prepared statement adott adatbázis sessionön belül létezik, a session lezártakor véget ér. Úgyhogy ez attól függ hogy kezeli az adott alkalmazás a sessiont. Phpban ez kb azt jelenti, hogy requesten belül él a prepared statement. Így ugyanazon lekérdezés futtatása alatt az adott requesten belüli futtatást értettem.

Az OOP-hez pedig semmi köze, úgyhogy anélkül is van értelme használni.
5

Még ha azt is hallod, hogy

bamegakapa · 2014. Már. 22. (Szo), 11.58
Még ha azt is hallod, hogy valami "lassabb" vagy "gyorsabb", egyelőre ne foglalkozz ezzel. Azt használd, ami tisztább, magasabb szintű, könnyebben módosítható és olvasható. Vannak, akik azzal szórakoznak, hogy a print vagy az echo a gyorsabb, meg hasonlók :). Ne pazarold ilyesmire az időt.

Használd a prepared statementeket, mindegy, hogy PDO vagy mysqli.