sql >> Databasteknik >  >> RDS >> Database

Enkel CRUD-drift med PDO-databasanslutning

Databaser finns överallt och det finns ingen praktisk PHP-applikation som skulle kunna existera utan en databas. Redan från början erbjuder PHP flera sätt att samverka med alla populära DBMS. Till exempel, två populära sätt att samverka med MySQL-baserade databaser är mysql och mysqli.

Genom åren har databaser kommit långt och nu erbjuder flera olika leverantörer populära DBMS som driver moderna PHP-appar. För att standardisera och effektivisera utvecklingsmetoderna introducerade PHP PHP Data Objects (PDO) i PHP 5.1. Dessa objekt används för att ställa in PDO-databasanslutningar.

PDO är ett lager för databasåtkomst som ger ett snabbt och konsekvent gränssnitt för åtkomst och hantering av databaser i PHP-applikationer. Varje DBMS har specifika PDO-drivrutiner som måste installeras när du använder PDO i PHP-applikationer.

Databaser som stöds

Drivrutinsnamn Databas som stöds

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 och win32 ODBC)
PDO_PGSQL PostgreSQL
PDO_SQLITE SQLite 3 och SQLite 2
PDO_SQLSRV Microsoft SQL Server / SQL Azure
PDO_4D 4D

Som standard har PHP PDO_SQLite-drivrutinen installerad. Men om du vill arbeta med andra databaser måste du först installera den relevanta drivrutinen.

för att kontrollera vilka drivrutiner som är installerade på ditt system, skapa en ny PHP-fil och lägg till följande kodsnutt till den:

<?php

print_r(PDO::getAvailableDrivers());

?>

Arbeta med SUB

PDO ersätter alla tidigare tillvägagångssätt för databasinteraktion. Med PDO kan du enkelt utföra CRUD och relaterade DBMS-operationer. I själva verket fungerar PDO som ett lager som separerar databasrelaterade operationer från resten av koden.

Du kanske också gillar:  Enkel CRUD i PHP och MySQL

Anslutning

En av de viktigaste fördelarna med PDO är den enkla och mycket okomplicerade databasanslutningen. Tänk på följande kodavsnitt som används för att skapa anslutningar till databasen. Observera att när den underliggande DBMS ändras är den enda ändringen som du behöver göra databastypen.

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

	}

}

?>

Lägg märke till att DBMS är MySQL i ovanstående kodavsnitt. Men om DBMS ändras till MS SQL Server kommer den enda ändringen att ersätta mysql med mssql.

Obs! PDO kan hantera undantag. Slå därför alltid in dess funktion i ett försök och fånga block.


Sluta slösa tid på servrar

Cloudways hanterar serverhantering åt dig så att du kan fokusera på att skapa fantastiska appar och hålla dina kunder nöjda.

Starta gratis


Skapa en tabell med PDO

För att skapa en tabell, deklarera först en frågesträng och kör den sedan med exec fungerar eftersom ingen data kommer att returneras.

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

}

?>

Infoga data med PDO

För att infoga data i en tabell med PDO, förbered först frågan med förbered påstående. Därefter exekveras denna fråga med execute fungera. Observera att denna praxis förhindrar SQL-injektionsattacker.

<?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älj Data med PDO

För att välja data, skapa först en frågesträng och kör den sedan i en för varje loop för att hämta poster från 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();

}

?>

Uppdatera data med PDO

För att uppdatera en post i tabellen, deklarera först en frågesträng och kör den sedan 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();

}

?>

Ta bort data med PDO

För att ta bort en post från tabellen, deklarera först en frågesträng och kör den sedan 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();

}

?>

Slutsats

PDO är det dataåtkomstlagret som avsevärt underlättar processen att ansluta och arbeta med databaser. Det bästa med PDO är kanske den strömlinjeformade processen för databasmigrering. Om du vill påskynda dina PDO-frågor med iteratorer, kolla in den här artikeln av Michelangelo van Dam.

I den här artikeln introducerade jag PDO och lyfte fram hur du kan utföra CRUD-åtgärder med PDO i PHP. Jag visade också uppsättning av PDO-databasanslutningar. Om du har frågor eller vill lägga till i diskussionen, lämna en kommentar nedan.


  1. Använda CONTINUE In Loops för att återuppta kontrollen i Oracle

  2. Hur man infogar en sträng i en annan sträng i SQL Server med STUFF()

  3. Digital transformation:Allt börjar med datatänkande

  4. MySQL RADIANS() Funktion – Konvertera från grader till radianer