Базите данни са навсякъде и няма практическо PHP приложение, което би могло да съществува без база данни. От самото начало PHP предлага няколко начина за взаимодействие с всички популярни СУБД. Например, два популярни начина за взаимодействие с базирани на MySQL бази данни са mysql и mysqli.
С годините базите данни изминаха дълъг път и сега няколко различни доставчици предлагат популярни СУБД, които захранват съвременните PHP приложения. За да стандартизира и рационализира практиките за разработка, PHP въведе PHP Data Objects (PDO) в PHP 5.1. Тези обекти се използват за настройка на PDO връзки към базата данни.
PDO е слой за достъп до база данни, който осигурява бърз и последователен интерфейс за достъп и управление на бази данни в PHP приложения. Всяка СУБД има специфични PDO драйвери, които трябва да бъдат инсталирани, когато използвате PDO в PHP приложения.
Поддържани бази данни
Име на драйвериПоддържана база данни
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 | Интерфейс за повикване на Oracle |
PDO_ODBC | ODBC v3 (IBM DB2, unixODBC и win32 ODBC) |
PDO_PGSQL | PostgreSQL |
PDO_SQLITE | SQLite 3 и SQLite 2 |
PDO_SQLSRV | Microsoft SQL Server / SQL Azure |
PDO_4D | 4D |
По подразбиране PHP има инсталиран PDO_SQLite драйвер. Въпреки това, ако искате да работите с други бази данни, първо трябва да инсталирате съответния драйвер.
за да проверите какви драйвери са инсталирани във вашата система, създайте нов PHP файл и добавете следния кодов фрагмент към него:
<?php print_r(PDO::getAvailableDrivers()); ?>
Работа с PDO
PDO заменя всички предишни подходи за взаимодействие с база данни. Използвайки PDO, можете лесно да изпълнявате CRUD и свързани DBMS операции. Всъщност PDO действа като слой, който разделя операциите, свързани с базата данни от останалата част от кода.
Може да ви хареса още: Прост CRUD в PHP и MySQL
Свързване
Едно от най-важните предимства на PDO е простата и много ясна свързаност с база данни. Помислете за следния кодов фрагмент, който се използва за настройка на връзки с базата данни. Имайте предвид, че когато основната СУБД се промени, единствената промяна, която трябва да направите, е типът на базата данни.
<?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; } } ?>
В горния кодов фрагмент забележете, че СУБД е MySQL. Ако обаче СУБД се промени на MS SQL Server, единствената промяна ще бъде замяната на mysql сmssql.
Забележка: PDO може да обработва изключения. Затова винаги обгръщайте работата му в блок за изпробване и хващане.
Спрете да губите време на сървъри
Cloudways се занимава с управлението на сървъра вместо вас, за да можете да се съсредоточите върху създаването на страхотни приложения и да поддържате клиентите си щастливи.
Стартирайте безплатноСъздаване на таблица с PDO
За да създадете таблица, първо декларирайте низ за заявка и след това го изпълнете с exec функция, тъй като няма да бъдат върнати данни.
<?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(); } ?>
Вмъкване на данни с PDO
За да вмъкнете данни в таблица с помощта на PDO, първо подгответе заявката с помощта на prepare изявление. След това тази заявка се изпълнява с изпълни функция. Имайте предвид, че тази практика предотвратява атаки с инжектиране на SQL.
<?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(); } ?>
Изберете данни с PDO
За да изберете данни, първо създайте низ за заявка и след това го изпълнете в за всеки цикъл за извличане на записи от таблицата.
<?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(); } ?>
Актуализиране на данните с PDO
За да актуализирате запис в таблицата, първо декларирайте низ на заявка и след това го изпълнете с exec функция.
<?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(); } ?>
Изтриване на данни с PDO
За да изтриете запис от таблицата, първо декларирайте низ на заявка и след това го изпълнете с exec функция.
<?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(); } ?>
Заключение
PDO е слоят за достъп до данни, който значително улеснява процеса на свързване и работа с бази данни. Може би най-доброто нещо за PDO е рационализираният процес на миграция на база данни. Ако искате да ускорите своите PDO заявки с итератори, вижте тази статия от Микеланджело ван Дам.
В тази статия представих PDO и подчертах как можете да изпълнявате CRUD действия, използвайки PDO в PHP. Също така демонстрирах настройка на връзки към база данни на PDO. Ако имате въпроси или искате да добавите към дискусията, оставете коментар по-долу.