Database
 sql >> Baza danych >  >> RDS >> Database

Łatwa obsługa CRUD dzięki połączeniu z bazą danych PDO

Bazy danych są wszędzie i nie ma praktycznej aplikacji PHP, która mogłaby istnieć bez bazy danych. Od samego początku PHP oferuje kilka sposobów współpracy ze wszystkimi popularnymi DBMS. Na przykład dwa popularne sposoby łączenia się z bazami danych opartymi na MySQL to mysql i mysqli.

Przez lata bazy danych przeszły długą drogę, a teraz kilku różnych dostawców oferuje popularne DBMS, które obsługują nowoczesne aplikacje PHP. Aby ujednolicić i usprawnić praktyki programistyczne, PHP wprowadziło PHP Data Objects (PDO) w PHP 5.1. Obiekty te służą do konfigurowania połączeń z bazą danych PDO.

PDO to warstwa dostępu do bazy danych, która zapewnia szybki i spójny interfejs dostępu do baz danych i zarządzania nimi w aplikacjach PHP. Każdy DBMS ma określony sterownik PDO, który należy zainstalować, gdy używasz PDO w aplikacjach PHP.

Obsługiwane bazy danych

Nazwa sterownikaObsługiwana baza danych

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 Interfejs Oracle Call
PDO_ODBC ODBC v3 (IBM DB2, unixODBC i win32 ODBC)
PDO_PGSQL PostgreSQL
PDO_SQLITE SQLite 3 i SQLite 2
PDO_SQLSRV Microsoft SQL Server / SQL Azure
PDO_4D 4D

Domyślnie PHP ma zainstalowany sterownik PDO_SQLite. Jeśli jednak chcesz pracować z innymi bazami danych, musisz najpierw zainstalować odpowiedni sterownik.

aby sprawdzić, jakie sterowniki są zainstalowane w Twoim systemie, utwórz nowy plik PHP i dodaj do niego następujący fragment kodu:

<?php

print_r(PDO::getAvailableDrivers());

?>

Praca z PDO

PDO zastępuje wszystkie poprzednie podejścia do interakcji z bazą danych. Używając PDO, możesz łatwo wykonać CRUD i powiązane operacje DBMS. W efekcie PDO działa jak warstwa, która oddziela operacje związane z bazą danych od reszty kodu.

Możesz też chcieć:  Proste CRUD w PHP i MySQL

Łączność

Jedną z najważniejszych zalet PDO jest prosta i bardzo bezpośrednia łączność z bazą danych. Rozważmy następujący fragment kodu, który służy do konfigurowania połączeń z bazą danych. Zwróć uwagę, że kiedy bazowy DBMS ulegnie zmianie, jedyną zmianą, jaką musisz wprowadzić, jest typ bazy danych.

<?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;

	}

}

?>

W powyższym fragmencie kodu zauważ, że DBMS to MySQL. Jeśli jednak DBMS zmieni się na MS SQL Server, jedyną zmianą będzie zastąpienie mysql z mssql.

Uwaga: PDO może obsługiwać wyjątki. Dlatego zawsze owijaj jego działanie w blok try-and-catch.


Przestań marnować czas na serwery

Cloudways zajmuje się zarządzaniem serwerem za Ciebie, dzięki czemu możesz skupić się na tworzeniu świetnych aplikacji i dbaniu o zadowolenie klientów.

Zacznij bezpłatnie


Tworzenie tabeli z PDO

Aby utworzyć tabelę, najpierw zadeklaruj ciąg zapytania, a następnie wykonaj go za pomocą exec funkcja, ponieważ żadne dane nie zostaną zwrócone.

<?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();

}

?>

Wstawianie danych z PDO

Aby wstawić dane do tabeli za pomocą PDO, najpierw przygotuj zapytanie za pomocą przygotuj oświadczenie. Następnie to zapytanie jest wykonywane z wykonaniem funkcjonować. Pamiętaj, że ta praktyka zapobiega atakom typu 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();

}

?>

Wybierz dane z PDO

Aby wybrać dane, najpierw utwórz ciąg zapytania, a następnie wykonaj go w dla każdego pętla, aby pobrać rekordy z tabeli.

<?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();

}

?>

Aktualizuj dane za pomocą PDO

Aby zaktualizować rekord w tabeli, najpierw zadeklaruj ciąg zapytania, a następnie wykonaj go za pomocą exec funkcja.

<?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();

}

?>

Usuń dane za pomocą PDO

Aby usunąć rekord z tabeli, najpierw zadeklaruj ciąg zapytania, a następnie wykonaj go za pomocą exec funkcja.

<?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();

}

?>

Wniosek

PDO to warstwa dostępu do danych, która znacznie ułatwia proces łączenia i pracy z bazami danych. Być może najlepszą rzeczą w PDO jest usprawniony proces migracji bazy danych. Jeśli chcesz przyspieszyć zapytania PDO za pomocą iteratorów, zapoznaj się z tym artykułem autorstwa Michelangelo van Dam.

W tym artykule przedstawiłem PDO i podkreśliłem, w jaki sposób można wykonywać akcje CRUD za pomocą PDO w PHP. Zademonstrowałem również konfigurowanie połączeń z bazą danych PDO. Jeśli masz pytania lub chcesz dodać do dyskusji, zostaw komentarz poniżej.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak usunąć wiersz w SQL

  2. Jak utworzyć przewijalny, aktualizowalny obiekt ResultSet w JDBC?

  3. Śledź wydajność bazy danych dzięki Uptime Infrastructure Monitor

  4. NextForm v3:Pięć opcji migracji danych i baz danych

  5. Schemat Switch-A-Roo:Część 2