hlmod.hu https://hlmod.hu/ |
|
[PHP] PDO Alapok https://hlmod.hu/viewtopic.php?f=118&t=23158 |
Oldal: 1 / 1 |
Szerző: | CrB [ 2015.12.25. 11:07 ] |
Hozzászólás témája: | [PHP] PDO Alapok |
Sziasztok Napjainkban az adatbázis kapcsolatok kezelésére elterjedt "módszer" a PDO. A PDO egy objektum az adatbázis kapcsolatok, lekérdezések, stb. kényelmes, hatékony, átlátható kezelésére. Emellett stabilabb és gyorsabb is mint társai. Akkor kezdjünk is neki. Első lépésben megnézzük, hogy hogyan is tudunk kapcsolódni az adatbázishoz. connect.php Kód: <?php Mit látunk ebben a kódban? Találunk egy try catch blokkot ami elősegíti a PDO hibakezelését. A csatlakozáshoz létre kell hoznunk egy un. connection stringet.
Menjünk kicsit tovább és nézzük meg a lekérdezéseket. 1. fetchAll A $db adattagon keresztül meghívjuk a query nevű adattag függvényt amiben egy un. query stringet adunk meg SQL alapismeretek gondolom nem kell részletezni a lekérdezést Ezt érdemes egy if -be beletenni, hiszen ekkor egyből tudjuk vizsgálni, hogy van -e hiba a lekérdezésünkben. Ezután jön még egy if amiben azt vizsgáljuk, hogy hány olyan sorunk van ami megfelel a feltételeinknek (természetesen ha 0 -át kap vissza eredménynek akkor alapból a hamis (else) ágra ugrik át). Ha nem 0 az eredmény akkor beállítjuk a fetch módot aminek 5 állapota lehet ezekről képet csatolok 1. állapot FETCH_BOTH [ablak][/ablak] Ebben az "állapotban" azt láthatjuk, hogy az adataink egy 2 dimenziós arraybe kerültek bele és az adatainkat egy asszociatív és egy számozott arrayként is megkapjuk. 2. állapot FETCH_NUM [ablak][/ablak] Ebben az "állapotban" azt láthatjuk, hogy az adataink szintén egy 2 dimenziós arrayben vannak viszont az adatainkat már csak egy számozott arrayként kapjuk meg. 3. állapot FETCH_ASSOC [ablak][/ablak] Itt azt láthatjuk, hogy az adatainkat csak asszociatív arrayként kapjuk meg. Kód: <?php 2. fetch A fetch és a fetchAll közötti alapvető különbség az, hogy a fetchAll minden sort egy külön dimenzióba helyez el míg a fetch csupán 1 sor lekérdezésére képes. Abban az esetben ha több sort akarunk lekérdezni akkor a fetch -et egy while ciklusban kell elhelyezni a kódban látható módon. A fetch mód itt is 5 értéket vehet fel a fetchAll nál a 4. et szándékosan nem írtam ki mert az az FETCH_OBJ azaz objectumokat hozunk létre amit itt jobban tudok demonstrálni. [ablak][/ablak] Ha FETCH_OBJ-t használunk az adatok kiíratása: $row->marka a $row adattagon belüli marka adattagra hivatkozunk. Kód: <?php A fetch teljes mértékben úgy működik mint mysql ben a mysql_fetch_array nem szeretném részletezni. Eljött az ideje, hogy beszéljünk kicsit arról, hogy a PDO képes arra, hogy az adatokat osztályhoz tartozó objektumba rendezze. Ez a fetch mód 5. állapota a FETCH_CLASS ahol második paraméterként meg kell adnunk, hogy melyik osztályba rendezze. Vegyünk egy általános példát az embereket. Ugye mint tudjuk minden embernek van vezetékneve keresztneve stb. Tehát egy osztályba tartoznak amit hívjunk embernek. A class on belül létrehozhatunk olyan változókat amik nincsenek benne az adatbázisunkban ezeknek un. constructorokkal adhatunk kezdő értéket. Lekérdezésnél a $row egy objectum lesz ami az általunk definiált Ember osztályhoz fog tartozni lesz neki id, vnev, knev, teljnev adatai amit ki is tudunk íratni. Kód: <?php Térjünk át a beszúrásra. A beszúrás PDO ban úgy működik, hogy először elő kell készíteni majd végrehajtani. A felkészítésnél adjuk meg az insert into parancsot ahol a values részénél paramétereket hozunk létre. Majd a végrehajtás (execute) résznél megadjuk a paraméterek értékeit. Kód 1: Kód: <?php Másik megoldás az, hogy a :m, :t, :ar helyett szimplán ? -eket írunk és akkor az execute részénél egy array ben csak felsoroljuk a változókat ez azonban ront az átláthatóságon. Kód: <?php Az update, delete from ugyan ezen a felkészít majd végrehajt elven működik. Ha valamit kihagytam vagy nem értitek esetleg hülyeséget írtam javítsatok ki |
Szerző: | Silent [ 2017.03.17. 21:53 ] |
Hozzászólás témája: | Re: [PHP] PDO Alapok |
Idézet: A PDO egy objektum az adatbázis kapcsolatok, lekérdezések, stb. kényelmes, hatékony, átlátható kezelésére. Kamu. A PDO az egy osztály, akkor lesz objektum (tehát ténylegesen memóriába lesz írva), amikor a new kulcsszóval példányosítod. Valamint nem lemented egy változóba a kapcsolatot, hanem az a változód egy referencia lesz az objektumra. A PDOException pedig nem egy fgv, hanem az $e egy PDOException osztályú referenciaváltozó, aminek van egy getMessage() publikus metódusa, ami az aktuális "thrown" exception stringgel tér vissza. |
Oldal: 1 / 1 | Minden időpont UTC+02:00 időzóna szerinti |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |