sql >> Databáze >  >> RDS >> Database

Snadná obsluha CRUD s připojením k databázi PDO

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 zdarma


Vytvoř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ář.


  1. Zabezpečení serveru MySQL

  2. Ukládání JSON v databázi vs. mít nový sloupec pro každý klíč

  3. Nabízí SQL Server něco jako MySQL NA AKTUALIZACI DUPLIKÁTNÍHO KLÍČE?

  4. Co způsobuje chybu Více není rozpoznáno... při spuštění Postgresql 11 na počítači se systémem Windows?