Databáze jsou všude a neexistuje žádná praktická PHP aplikace, která by bez databáze mohla existovat. Od samého začátku PHP nabízí několik způsobů propojení se všemi populárními DBMS. Například dva oblíbené způsoby propojení s databázemi založenými na MySQL jsou mysql a mysqli.
V průběhu let ušly databáze dlouhou cestu a nyní několik různých dodavatelů nabízí populární DBMS, které pohání moderní PHP aplikace. Pro standardizaci a zefektivnění vývojových postupů zavedl PHP v PHP 5.1 datové objekty PHP (PDO). Tyto objekty se používají k nastavení připojení databáze PDO.
PDO je vrstva pro přístup k databázi, která poskytuje rychlé a konzistentní rozhraní pro přístup a správu databází v aplikacích PHP. Každý DBMS má specifické ovladače PDO, které je třeba nainstalovat, když používáte PDO v aplikacích PHP.
Podporované databáze
Název ovladačePodporovaná databáze
PDO_CUBRID | Cubrid |
PDO_DBLIB | FreeTDS / Microsoft SQL Server / Sybase |
PDO_FIREBIRD | Firebird |
PDO_IBM | IBM DB2 |
PDO_INFORMIX | IBM Informix Dynamic Server |
PDO_MYSQL | MySQL 3.x/4.x/5.x |
PDO_OCI | Rozhraní Oracle Call Interface |
PDO_ODBC | ODBC v3 (IBM DB2, unixODBC a win32 ODBC) |
PDO_PGSQL | PostgreSQL |
PDO_SQLITE | SQLite 3 a SQLite 2 |
PDO_SQLSRV | Microsoft SQL Server / SQL Azure |
PDO_4D | 4D |
Ve výchozím nastavení má PHP nainstalovaný ovladač PDO_SQLite. Pokud však chcete pracovat s jinými databázemi, musíte nejprve nainstalovat příslušný ovladač.
Chcete-li zkontrolovat, jaké ovladače máte nainstalované ve vašem systému, vytvořte nový soubor PHP a přidejte do něj následující fragment kódu:
<?php print_r(PDO::getAvailableDrivers()); ?>
Práce s CHOP
PDO nahrazuje všechny předchozí přístupy k interakci s databází. Pomocí PDO můžete snadno provádět CRUD a související operace DBMS. Ve skutečnosti PDO funguje jako vrstva, která odděluje operace související s databází od zbytku kódu.
Mohlo by se vám také líbit: Jednoduché CRUD v PHP a MySQL
Připojení
Jednou z nejdůležitějších výhod PDO je jednoduchá a velmi přímočará databázová konektivita. Zvažte následující fragment kódu, který se používá k nastavení připojení k databázi. Všimněte si, že když se změní základní DBMS, jedinou změnou, kterou musíte provést, je typ databáze.
<?php Class Connection { private $server = "mysql:host=localhost;dbname=cloudways"; private $user = "root"; private $pass = ""; private $options = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,); protected $con; public function openConnection() { try { $this->con = new PDO($this->server, $this->user,$this->pass,$this->options); return $this->con; } catch (PDOException $e) { echo "There is some problem in connection: " . $e->getMessage(); } } public function closeConnection() { $this->con = null; } } ?>
Ve výše uvedeném úryvku kódu si všimněte, že DBMS je MySQL. Pokud se však DBMS změní na MS SQL Server, jedinou změnou bude nahrazení mysql pomocí mssql.
Poznámka: PDO zvládne výjimky. Proto vždy zabalte jeho operaci do bloku pokusu a chycení.
Přestaňte plýtvat časem na serverech
Cloudways za vás spravují správu serverů, takže se můžete soustředit na vytváření skvělých aplikací a zajištění spokojenosti vašich klientů.
Začít zdarmaVytvoření tabulky s PDO
Chcete-li vytvořit tabulku, nejprve deklarujte řetězec dotazu a poté jej spusťte pomocí exec funkce, protože nebudou vrácena žádná data.
<?php include_once 'connection.php'; try { $database = new Connection(); $db = $database->openConnection(); // sql to create table $sql = "CREATE TABLE `Student` ( `ID` INT NOT NULL AUTO_INCREMENT , `name`VARCHAR(40) NOT NULL , `last_ame` VARCHAR(40) NOT NULL , `email` VARCHAR(40)NOT NULL , PRIMARY KEY (`ID`)) "; // use exec() because no results are returned $db->exec($sql); echo "Table Student created successfully"; $database->closeConnection(); } catch (PDOException $e) { echo "There is some problem in connection: " . $e->getMessage(); } ?>
Vkládání dat s PDO
Chcete-li vložit data do tabulky pomocí PDO, nejprve připravte dotaz pomocí připravit prohlášení. Dále se tento dotaz provede příkazem execute funkce. Všimněte si, že tento postup zabraňuje útokům SQL injection.
<?php include_once 'connection.php'; try { $database = new Connection(); $db = $database->openConnection(); // inserting data into create table using prepare statement to prevent from sql injections $stm = $db->prepare("INSERT INTO student (ID,name,last_name,email) VALUES ( :id, :name, :lastname, :email)") ; // inserting a record $stm->execute(array(':id' => 0 , ':name' => 'Saquib' , ':lastname' => 'Rizwan' , ':email' => '[email protected]')); echo "New record created successfully"; } catch (PDOException $e) { echo "There is some problem in connection: " . $e->getMessage(); } ?>
Vyberte Data s PDO
Chcete-li vybrat data, nejprve vytvořte řetězec dotazu a poté jej spusťte v pro každý smyčka pro načtení záznamů z tabulky.
<?php include_once 'connection.php'; try { $database = new Connection(); $db = $database->openConnection(); $sql = "SELECT * FROM student " ; foreach ($db->query($sql) as $row) { echo " ID: ".$row['ID'] . "<br>"; echo " Name: ".$row['name'] . "<br>"; echo " Last Name: ".$row['last_name'] . "<br>"; echo " Email: ".$row['email'] . "<br>"; } } catch (PDOException $e) { echo "There is some problem in connection: " . $e->getMessage(); } ?>
Aktualizovat data pomocí PDO
Chcete-li aktualizovat záznam v tabulce, nejprve deklarujte řetězec dotazu a poté jej spusťte pomocí exec funkce.
<?php include_once 'connection.php'; try { $database = new Connection(); $db = $database->openConnection(); $sql = "UPDATE `student` SET `name`= 'yourname' , `last_name` = 'your lastname' , `email` = 'your email' WHERE `id` = 8" ; $affectedrows = $db->exec($sql); if(isset($affectedrows)) { echo "Record has been successfully updated"; } } catch (PDOException $e) { echo "There is some problem in connection: " . $e->getMessage(); } ?>
Smazat data pomocí PDO
Chcete-li odstranit záznam z tabulky, nejprve deklarujte řetězec dotazu a poté jej spusťte pomocí exec funkce.
<?php include_once 'connection.php'; try { $database = new Connection(); $db = $database->openConnection(); $sql = "DELETE FROM student WHERE `id` = 8" ; $affectedrows = $db->exec($sql); if(isset($affectedrows)) { echo "Record has been successfully deleted"; } } catch (PDOException $e) { echo "There is some problem in connection: " . $e->getMessage(); } ?>
Závěr
PDO je vrstva pro přístup k datům, která výrazně usnadňuje proces připojení a práci s databázemi. Možná nejlepší věcí na PDO je zjednodušený proces migrace databáze. Pokud chcete urychlit dotazy na PDO pomocí iterátorů, podívejte se na tento článek od Michelangela van Dama.
V tomto článku jsem představil PDO a zdůraznil, jak byste mohli provádět akce CRUD pomocí PDO v PHP. Předvedl jsem také nastavení připojení k databázi PDO. Pokud máte dotazy nebo se chcete přidat do diskuse, zanechte níže komentář.