Database
 sql >> база данни >  >> RDS >> Database

Лесна работа с CRUD с PDO база данни

Базите данни са навсякъде и няма практическо 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. Ако имате въпроси или искате да добавите към дискусията, оставете коментар по-долу.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Обосноваване на новия Mac Pro

  2. Въведение в auto_explain:Как автоматично да регистрирате бавни планове за заявка на Postgres

  3. Праисторически и съвременен подход към проектиране на бази данни

  4. Тайните на доминото, или модел на данни за играта домино

  5. Свеждане до минимум на въздействието на DBCC CHECKDB:Ds and DONTs