logo

Úvod do PHP PDO

PHP je open-source univerzální skriptovací jazyk, který je široce používán pro vytváření dynamických a interaktivních webových stránek. PHP může přistupovat k široké škále systémů pro správu relačních databází, jako jsou např MYSQL, SQLite , a PostgreSQL . The PHP 5.1 verze nabídla novou knihovnu abstrakce připojení k databázi, která je Datové objekty PHP (CHOP).

Co je PDO?

PDO odkazuje na Datový objekt PHP , což je rozšíření PHP, které definuje odlehčené a konzistentní rozhraní pro přístup k databázi v PHP. Jedná se o sadu rozšíření PHP, která poskytují základní třídu PDO a ovladač specifický pro databázi. Každý databázový ovladač může vystavit funkce specifické pro databázi jako běžnou rozšiřující funkci, která implementuje rozhraní PDO.

Poznámka: Nemůžeme provádět žádný typ databázové funkce pomocí samotného rozšíření PDO. Pro přístup k databázovému serveru musíme použít ovladač PDO specifický pro databázi.

PDO se zaměřuje především na abstrakci přístupu k datům spíše než na abstrakci databází. Poskytuje vrstva abstrakce přístupu k datům , což znamená, že bez ohledu na databázi, kterou používáme, musíme k zadávání dotazů a načítání dat používat stejné funkce, které tato databáze poskytuje. PDO neposkytuje abstrakci dat, protože nepřepisuje SQL ani neemuluje chybějící funkce.

Výhoda CHOP

PDO poskytuje různé způsoby práce s objekty a načítá připravené příkazy, které práci značně usnadňují. Jedná se o nástroj pro přístup k databázi v PHP, jehož prostřednictvím umožňujeme jednotný přístup napříč několika databázemi.

PDO umožňuje poměrně bezproblémové přepínání mezi různými databázemi a platformami, což lze snadno provést změnou připojovacího řetězce. Nepodporuje syntaxe specifické pro databázi.

Existují některé výhody PDO:

    Podpora databáze
    Rozšíření PDO může přistupovat k jakékoli databázi, která je napsána pro ovladač PDO. K dispozici je několik ovladačů PDO, které se používají FreeTDS, Microsoft SQL Server, Sybase, IBM DB2, Oracle Call Interface, Firebird/Interbase 6 , a PostgreSQL databáze, mezi mnoha dalšími.
    Ovladače nejsou k dispozici v každém systému automaticky, takže musíme najít dostupné ovladače a přidat je, když je potřebujeme.Připojení k databázi
    K navázání připojení k databázi jsou k dispozici různé syntaxe. Tyto syntaxe závisí na konkrétních databázích. Při používání PDO musí být operace zabaleny do bloků try/catch a musí využívat techniku ​​výjimek.
    Obvykle je potřeba vytvořit pouze jedno připojení a tato připojení jsou uzavřena naprogramováním databáze na hodnotu null.Vypořádání se s chybou
    PDO umožňuje používat výjimky pro zpracování chyb. Pro vytvoření výjimky může být PDO vynucen do příslušného atributu chybového režimu.
    Existují tři chybové režimy, tj. Tichý (výchozí), Varování , a Výjimka . Varování a Výjimka jsou užitečnější při programování DRY.
      Tichý- Je to výchozí chybový režim.Varování- Je to užitečné pro ladění.Výjimka- Tento režim umožňuje elegantní zpracování chyb a zároveň skrývá data, která by někdo mohl použít ke zneužití vašeho systému.
    Vložit a aktualizovat
    PDO redukuje běžně používané operace vkládání a aktualizace databáze na dvoukrokový proces, tzn.
    Připravit >> [Svázat] >> Provést.
    Prostřednictvím této metody můžeme plně využít připravené příkazy PDO, které chrání před škodlivými útoky prostřednictvím SQL injection.
    Připravené příkazy jsou předkompilované příkazy SQL, které lze provést vícekrát odesláním těchto dat na server. Tato data, která se používají v rámci zástupného symbolu, jsou automaticky chráněna před útokem SQL injection.

Výhody používání CHOP

PDO je nativní databázový ovladač. Níže jsou uvedeny některé výhody používání PDO:

    Použitelnost- Obsahuje mnoho pomocných funkcí pro ovládání automatických rutinních operací.Znovupoužitelnost- Nabízí jednotné API pro přístup k více databázím.Bezpečnostní- Používá připravený příkaz, který chrání před injekcí SQL. Připravený příkaz je předkompilovaný příkaz SQL, který odděluje instrukci příkazu SQL od dat.

Třídy CHOP

Existují tři třídy CHOP, které jsou uvedeny níže:

    CHOP- Představuje spojení mezi PHP a databází.PDOSstatement- Představuje připravený příkaz a po provedení příkazu nastaví přidružený výsledek.Výjimka PDO- Představuje chyby způsobené CHOP.

Databáze podporované PDO

  1. MySQL
  2. PostgreSQL
  3. Věštec
  4. Fénix
  5. MS SQL Server
  6. Sybase
  7. Informix
  8. IBM
  9. FreeTDS
  10. SQLite
  11. Cubrid
  12. 4D

Srovnání mezi PDO a MySQLi

Pro přístup k databázi pomocí PHP máme především dvě možnosti - MySQLi a CHOP (Datový objekt PHP). MySQLi je nativní pro PHP, který poskytuje rychlejší výkon, zatímco většina zkušených vývojářů dává přednost práci s PDO, protože podporuje širokou škálu databázových ovladačů. Mezi PDO a MySQLi jsou některé rozdíly uvedené níže na základě jejich vlastností.

Funkce CHOP MySQLi
Podpora DB 12 různých ovladačů Pouze MySQL
Spojení Snadný Snadný
API OTEVŘENO OOP + Postup
Výkon Rychle Rychle
Pojmenovaný parametr Ano Ne
Mapování objektů Ano Ano
Uložené procedury Ano Ano
Připravené výpisy na straně klienta Ano Ne
Bezpečnostní Bezpečnější než MySQLi. Bezpečné, ale ne více než CHOP.

Co by mělo být preferováno mezi PDO nebo MySQLi?

PDO i MySQLi mají své výhody:

  • Jak jsme viděli dříve, PDO funguje na 12 různých databázových systémech, zatímco MySQL může pracovat pouze s databází MySQL. Pokud tedy chceme přepnout náš projekt do jiné databáze, PDO to usnadní. V MySQLi musíme přepsat celý kód.
  • PDO i MySQLi jsou objektově orientované, ale MySQLi nabízí také procedurální API. Oba podporují připravená prohlášení. Připravené příkazy jsou důležité pro zabezpečení webových aplikací, protože chrání před SQL injection.

Požadavek

K sestavení tohoto rozšíření nejsou potřeba externí knihovny.

Proces instalace

Krok 1: Stáhněte si nejnovější server XAMPP odtud https://www.apachefriends.org/download.html pro různé platformy, jako jsou Windows, Linux a MacOS.

Phppdo

Poznámka: Zde probereme proces instalace pouze pro OS Windows.

Krok 2: Nainstalujte XAMPP Server na váš systém podle následujících kroků.

Phppdo

Krok 3: Vyberte součásti, které chcete nainstalovat, a klikněte na tlačítko Další.

Phppdo

Krok 4: Vytvořte novou složku s názvem xampp v umístění, kam chcete nainstalovat XAMPP.

Phppdo

Krok 5: Zde klikněte na Další a pokračujte vpřed. Instalace serveru XAMPP bude zahájena zde.

Phppdo

Krok 6: XAMPP je úspěšně nainstalován. Klikněte na tlačítko Dokončit.

Phppdo

Krok 7: Vyberte preferovaný jazyk.

Phppdo

Krok 8: Spusťte server Apache a MySQL odtud (podle daného snímku obrazovky).

Phppdo

Krok 9: Nyní otevřete php.ini z C:/xampp/php/php.ini (kde jste nainstalovali XAMPP) a odkomentujte rozšíření 'php_pdo_mysql.dll' a 'php_pdo.dll' (pokud pracujete s databází MySQL), popř 'php_pdo_oci.dll' (pokud pracujete s databází Oracle). Nyní začněte pracovat s databází. Ve vyšší verzi PHP 5.1 je již nastaven.

Práce s PDO

Nejprve musíme vytvořit databázi, takže odtud vytvořte databázi jménem myDB.

Phppdo

Připojení k databázi

Pro interakci s databází je vždy vyžadováno připojení k databázi. Potřebujeme tedy znát identifikátor pro přístup k databázi, tedy umístění databáze, název databáze, uživatelské jméno a heslo.

Nyní vytvořte program pro připojení k databázi pomocí PDO v libovolném textovém editoru, jako je notepad nebo notepad++, a uložte jej pod názvem coonection.php. Spusťte jej na serveru XAMPP pomocí localhost/80.

mapování na stroji

Příklad

 getMessage(); } ?> 

Výstup

Spusťte jej na serveru pomocí následující adresy URL localhost/Xampp/pdoexample/connection.php/ nebo kam jste uložili svůj program.

Phppdo

Manipulace s chybou připojení

Pokud dojde k nějaké chybě připojení, bude vyvolán objekt PDOException. Můžeme zachytit výjimku, pokud chceme zpracovat chybovou podmínku, nebo ji můžeme také ponechat na globálním obsluze výjimek, kterou lze nastavit pomocí set_exception_handler() funkce.

Příklad

V tomto příkladu je dbUser(user-id) chybný, takže vyvolá výjimku, jak můžeme vidět na výstupu.

 setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); Echo 'Successfully connected with myDB database'; } catch(Exception $e){ Echo 'Connection failed' . $e->getMessage(); } ?> 
Phppdo

Ukončení připojení k databázi

 getMessage(); } // this command close the connection. $dbConn = null; ?> 

Výstup

Phppdo