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' => 'example@sqldat.com'));
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ář.