A PHP egy nyílt forráskódú, általános célú szkriptnyelv, amelyet széles körben használnak dinamikus és interaktív weboldalak létrehozására. A PHP számos relációs adatbázis-kezelő rendszerhez tud hozzáférni, mint pl MYSQL, SQLite , és PostgreSQL . A PHP 5.1 verzió egy új adatbázis-kapcsolat absztrakciós könyvtárat kínált, amely az PHP adatobjektumok (OEM).
Mi az az OEM?
OEM utal PHP adatobjektum , amely egy PHP-bővítmény, amely könnyű és konzisztens felületet határoz meg az adatbázisok PHP-ben való eléréséhez. Ez egy olyan PHP-bővítmény, amely alapvető PDO osztályt és adatbázis-specifikus illesztőprogramot biztosít. Minden adatbázis-illesztőprogram felfedheti az adatbázis-specifikus szolgáltatásokat a PDO interfészt megvalósító szokásos kiterjesztési funkcióként.
Megjegyzés: Semmiféle adatbázis-funkciót nem tudunk végrehajtani magának a PDO kiterjesztésnek a használatával. Az adatbázis-kiszolgáló eléréséhez adatbázis-specifikus PDO-illesztőprogramot kell használnunk.
Az OEM elsősorban az adathozzáférés absztrakciójára összpontosít, nem pedig az adatbázis-absztrakcióra. Ez biztosítja adathozzáférési absztrakciós réteg , ami azt jelenti, hogy függetlenül attól, hogy melyik adatbázist használjuk, ugyanazokat a funkciókat kell használnunk, amelyeket az adatbázis biztosít a lekérdezések kibocsátásához és az adatok lekéréséhez. A PDO nem biztosít adatabsztrakciót, mivel nem írja át az SQL-t, és nem emulálja a hiányzó szolgáltatásokat.
Az OEM előnye
A PDO különféle módokat biztosít az objektumokkal való munkavégzéshez, és lekéri az előkészített utasításokat, amelyek jelentősen megkönnyítik a munkát. Ez egy adatbázis-elérési eszköz a PHP-ben, amelyen keresztül egységes hozzáférést biztosítunk több adatbázishoz.
A PDO viszonylag zökkenőmentes váltást tesz lehetővé a különböző adatbázisok és platformok között, ami egyszerűen elvégezhető a kapcsolati karakterlánc megváltoztatásával. Nem támogatja az adatbázis-specifikus szintaxisokat.
Az OEM-nek van néhány előnye:
A PDO kiterjesztés bármilyen adatbázishoz hozzáférhet, amely PDO illesztőprogramhoz íródott. Számos PDO illesztőprogram áll rendelkezésre, amelyekhez használható FreeTDS, Microsoft SQL Server, Sybase, IBM DB2, Oracle Call Interface, Firebird/Interbase 6 , és PostgreSQL adatbázisok, sok más mellett.
Az illesztőprogramok nem minden rendszerben érhetők el automatikusan, ezért meg kell találnunk az elérhető illesztőprogramjainkat, és szükség esetén hozzáadnunk kell azokat.
Különféle szintaxisok állnak rendelkezésre az adatbázis-kapcsolat létrehozásához. Ezek a szintaxisok meghatározott adatbázisoktól függenek. Az OEM használata során a műveleteket try/catch blokkokba kell csomagolni, és a kivételtechnikát kell használni.
Általában csak egyetlen kapcsolatot kell létrehozni, és ezeket a kapcsolatokat úgy zárják le, hogy az adatbázist nullára programozzák.
Az OEM lehetővé teszi kivételek használatát a hibakezeléshez. Kivétel létrehozásához a PDO-t egy releváns hibamód attribútumra lehet kényszeríteni.
Három hibamód létezik, pl. Csendes (alapértelmezett), Figyelem , és Kivétel . A Figyelmeztetés és a Kivétel hasznosabb a DRY programozásban.
Az OEM az általánosan használt adatbázis-beszúrási és frissítési műveletet kétlépcsős folyamattá redukálja, azaz.
Előkészítés >> [Bind] >> Végrehajtás.
Ezzel a módszerrel teljes mértékben kihasználhatjuk a PDO előkészített utasításait, amelyek SQL-injekción keresztül védenek a rosszindulatú támadások ellen.
Az előkészített utasítások előre lefordított SQL utasítások, amelyek többször is végrehajthatók, ha elküldik ezeket az adatokat a kiszolgálónak. Ezek az adatok, amelyek a helyőrzőn belül kerülnek felhasználásra, automatikusan védettek az SQL injekciós támadás ellen.
Az OEM használatának előnyei
A PDO a natív adatbázis-illesztőprogram. Az OEM használatának van néhány előnye, amelyeket alább ismertetünk:
OEM osztályok
Három OEM osztály létezik, amelyeket az alábbiakban adunk meg:
hó vs jég
OEM által támogatott adatbázisok
- MySQL
- PostgreSQL
- Jóslat
- Tűzmadár
- MS SQL Server
- Sybase
- Informix
- IBM
- FreeTDS
- SQLite
- Cubrid
- 4D
Az OEM és a MySQLi összehasonlítása
Az adatbázis PHP használatával való eléréséhez alapvetően két lehetőségünk van: MySQLi és OEM (PHP adatobjektum). A MySQLi a PHP natív verziója, amely gyorsabb teljesítményt biztosít, míg a tapasztalt fejlesztők többsége inkább PDO-val dolgozik, mivel az adatbázis-illesztőprogramok széles választékát támogatja. Az alábbiakban felsorolt OEM és MySQLi között van néhány különbség a jellemzőik alapján.
Jellemzők | OEM | MySQLi |
---|---|---|
DB támogatás | 12 különböző driver | Csak MySQL |
Kapcsolat | Könnyen | Könnyen |
API | NYISD KI | OOP + Eljárás |
Teljesítmény | Gyors | Gyors |
Paraméter néven | Igen | Nem |
Objektum leképezés | Igen | Igen |
Tárolt eljárás | Igen | Igen |
Ügyféloldali elkészített nyilatkozatok | Igen | Nem |
Biztonság | Biztonságosabb, mint a MySQLi. | Biztonságos, de legfeljebb OEM. |
Melyiket érdemes előnyben részesíteni az OEM vagy a MySQLi között?
Mind az OEM, mind a MySQLi megvannak a maga előnyei:
char a stringhez
- Ahogy korábban láttuk, a PDO 12 különböző adatbázisrendszeren működik, míg a MySQL csak a MySQL adatbázissal tud működni. Tehát, ha át akarjuk állítani a projektünket egy másik adatbázisba, az OEM egyszerűvé teszi. A MySQLiben a teljes kódot át kell írnunk.
- A PDO és a MySQLi egyaránt objektum-orientált, de a MySQLi eljárási API-t is kínál. Mindkettő támogatja az előkészített nyilatkozatokat. Az elkészített nyilatkozatok fontosak a webalkalmazások biztonsága szempontjából, mivel megvédik az SQL-befecskendezést.
Követelmény
A bővítmény elkészítéséhez nincs szükség külső könyvtárakra.
Telepítési folyamat
1. lépés: Töltse le a legújabb XAMPP szervert innen https://www.apachefriends.org/download.html különböző platformokhoz, például Windows, Linux és MacOS.
Megjegyzés: Itt csak a Windows operációs rendszer telepítési folyamatát tárgyaljuk.
2. lépés: Telepítse az XAMPP szervert a rendszerére az alábbi lépések végrehajtásával.
3. lépés: Válassza ki a telepíteni kívánt összetevőket, majd kattintson a Tovább gombra.
4. lépés: Hozza létre az új mappát xampp néven azon a helyen, ahová telepíteni szeretné az XAMPP-t.
5. lépés: Kattintson ide a Tovább gombra, és lépjen tovább. Az XAMPP szerver telepítése innen indul.
6. lépés: Az XAMPP telepítése sikeres volt. Kattintson a Befejezés gombra.
7. lépés: Válassza ki a kívánt nyelvet.
8. lépés: Futtassa innen az Apache szervert és a MySQL-t (a megadott képernyőkép szerint).
9. lépés: Most nyissa meg a php.ini-t innen C:/xampp/php/php.ini (ahova telepítette az XAMPP-t), és törölje a kiterjesztés megjegyzését 'php_pdo_mysql.dll' és 'php_pdo.dll' (ha MySQL adatbázissal dolgozik), vagy 'php_pdo_oci.dll' (ha Oracle adatbázissal dolgozik). Most kezdjen el dolgozni az adatbázissal. A PHP 5.1 felső verziójában ez már be van állítva.
Munka OEM
Először is létre kell hoznunk egy adatbázist, tehát innen hozzunk létre egy adatbázist myDB néven.
Adatbázis kapcsolat
Az adatbázissal való interakcióhoz mindig adatbáziskapcsolat szükséges. Tehát tudnunk kell az adatbázis eléréséhez szükséges azonosítót, azaz az adatbázis helyét, az adatbázis nevét, felhasználónevét és jelszavát.
Most hozza létre az adatbázis-csatlakozási programot PDO használatával bármely szövegszerkesztőben, például jegyzettömbben vagy notepad++-ban, és mentse el coonection.php néven. Futtassa az XAMPP szerveren a localhost/80 használatával.
string hosszúságú java
Példa
getMessage(); } ?>
Kimenet
Futtassa a szerveren a következő URL használatával localhost/Xampp/pdoexample/connection.php/ vagy hova mentette a programot.
Kapcsolódási hiba kezelése
Kapcsolódási hiba esetén a rendszer egy PDOException objektumot dob ki. Megkaphatjuk a kivételt, ha kezelni akarjuk a hibaállapotot, vagy meghagyhatjuk a globális kivételkezelőnek is, amelyet beállíthatunk set_exception_handler() funkció.
Példa
Ebben a példában a dbUser(user-id) hibás, ezért kivételt fog dobni, amint azt a kimenetben láthatjuk.
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); Echo 'Successfully connected with myDB database'; } catch(Exception $e){ Echo 'Connection failed' . $e->getMessage(); } ?>
Az adatbázis-kapcsolat bezárása
getMessage(); } // this command close the connection. $dbConn = null; ?>
Kimenet