sql >> Database teknologi >  >> RDS >> Database

Nem CRUD-betjening med PDO-databaseforbindelse

Databaser er overalt, og der er ingen praktisk PHP-applikation, der kunne eksistere uden en database. Helt fra begyndelsen tilbyder PHP flere måder at interface med alle populære DBMS. For eksempel er to populære måder at interface med MySQL-baserede databaser på mysql og mysqli.

Gennem årene er databaser kommet langt, og nu tilbyder flere forskellige leverandører populære DBMS, der driver moderne PHP-apps. For at standardisere og strømline udviklingspraksis introducerede PHP PHP Data Objects (PDO) i PHP 5.1. Disse objekter bruges til at opsætte PDO-databaseforbindelser.

PDO er et databaseadgangslag, som giver en hurtig og ensartet grænseflade til at få adgang til og administrere databaser i PHP-applikationer. Hvert DBMS har specifikke PDO-drivere, der skal installeres, når du bruger PDO i PHP-applikationer.

Understøttede databaser

DrivernavnUnderstøttet database

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

Som standard har PHP PDO_SQLite driver installeret. Men hvis du ønsker at arbejde med andre databaser, skal du først installere den relevante driver.

for at kontrollere, hvilke drivere der er installeret på dit system, skal du oprette en ny PHP-fil og tilføje følgende kodestykke til den:

<?php

print_r(PDO::getAvailableDrivers());

?>

Arbejde med BOB

PDO erstatter alle tidligere databaseinteraktionstilgange. Ved at bruge PDO kan du nemt udføre CRUD og relaterede DBMS-operationer. Faktisk fungerer PDO som et lag, der adskiller databaserelaterede operationer fra resten af ​​koden.

Du kan måske også lide:  Simpel CRUD i PHP og MySQL

Forbindelse

En af de vigtigste fordele ved PDO er den enkle og meget ligetil databaseforbindelse. Overvej følgende kodestykke, der bruges til at oprette forbindelser til databasen. Bemærk, at når den underliggende DBMS ændres, er den eneste ændring, du skal foretage, databasetypen.

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

	}

}

?>

I ovenstående kodestykke skal du bemærke, at DBMS er MySQL. Men hvis DBMS ændres til MS SQL Server, vil den eneste ændring være erstatningen af ​​mysql med mssql.

Bemærk: PDO kan håndtere undtagelser. Pak derfor altid dens funktion ind i en prøv-og-fang-blok.


Stop med at spilde tid på servere

Cloudways håndterer serveradministration for dig, så du kan fokusere på at skabe fantastiske apps og holde dine kunder glade.

Start gratis


Oprettelse af en tabel med PDO

For at oprette en tabel skal du først erklære en forespørgselsstreng og derefter udføre den med exec funktion, da ingen data vil blive returneret.

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

}

?>

Indsættelse af data med PDO

For at indsætte data i en tabel ved hjælp af PDO skal du først forberede forespørgslen med forbered udmelding. Dernæst udføres denne forespørgsel med execute fungere. Bemærk, at denne praksis forhindrer SQL-injektionsangreb.

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

}

?>

Vælg Data med PDO

For at vælge data skal du først oprette en forespørgselsstreng og derefter udføre den i en for hver sløjfe for at hente poster fra tabellen.

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

}

?>

Opdater data med PDO

For at opdatere en post i tabellen skal du først erklære en forespørgselsstreng og derefter udføre den med exec funktion.

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

}

?>

Slet data med PDO

For at slette en post fra tabellen skal du først erklære en forespørgselsstreng og derefter udføre den med exec funktion.

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

}

?>

Konklusion

PDO er det dataadgangslag, der i høj grad letter processen med at forbinde og arbejde med databaser. Måske er det bedste ved PDO den strømlinede proces med databasemigrering. Hvis du vil fremskynde dine BOB-forespørgsler med iteratorer, så tjek denne artikel af Michelangelo van Dam.

I denne artikel introducerede jeg PDO og fremhævede, hvordan du kunne udføre CRUD-handlinger ved hjælp af PDO i PHP. Jeg demonstrerede også opsætning af PDO-databaseforbindelser. Hvis du har spørgsmål eller gerne vil tilføje til diskussionen, så læg en kommentar nedenfor.


  1. Prædikatrækkefølge har betydning i forlængede begivenheder

  2. Opgradering af MariaDB 10.0 til 10.3.9 på Ubuntu 16.04

  3. Perl DBI - kør SQL Script med flere sætninger

  4. Formater tal med komma i SQLite