PHP PDO

PHP PDO

Category : PHP

pdo-phpPHP Data Objects è una delle estensioni più interessanti introdotte nella versione 5 di PHP, grazie ad essa si può finalmente rimediare ad una grave mancanza che per lungo tempo ha caratterizzato questo linguaggio e cioè l’assenza di un’unica interfaccia per l’accesso alle basi di dati.

Si immagini di lavorare su un progetto che prevede la creazione di un sito Web basato sull’interazione con un DBMS per l’accesso ai dati, il Database manager utilizzato potrebbe essere per esempio MySQL; a questo scopo lo sviluppatore potrà sfruttare le potenzialità messe a disposizione dalle funzioni native mysql_ based o mysqli_ based, ma cosa succederebbe se, per una qualsiasi esigenza, ci si ritrovasse di fronte alla necessità di trasferire il sito Web su un altro server che ha come DBMS di riferimento SQLServer?

Semplice, si avrebbe la necessità di riscrive l’applicazione da zero o almeno la parte che riguarda l’accesso ai dati. Con PDO invece è ora possibile accedere a dati messi a disposizione da differenti tipologie di Database manager tra cui anche MySQL, SQLite, PostgreSQL, SQLserver e Oracle grazie al fatto che esso fornisce un data-access abstraction layer ovvero un livello più alto di astrazione per l’accesso ai dati, si tratta “semplicemente” di una classe che mette a disposizione un insieme di sotto-classi derivate che agiscono in modo trasparente rispetto all’utente.

Detto ciò ecco un esempio della classe che utilizzo nelle mie WebApp


<?php

class Connection{

  protected $db;

  public function Connection(){

  $conn = NULL;
  $dsn = 'mysql:host=127.0.0.1;dbname=nomeDelDB';
  $user = 'username';
  $password = 'lamiapassword';

  try{
    $conn = new PDO($dsn, $user, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch(PDOException $e) {
      echo 'ERROR CONNECTION: ' . $e->getMessage();
    }
    $this->db = $conn;
  }

  public function getConnection(){
    return $this->db;
  }
}

?>
Per accedere ai dati utilizzo il seguente codice

<?php

include dirname(__FILE__).'/connection.php';

  $connection = new Connection();
  $db = $connection->getConnection();
        $sql = " SELECT * FROM Employee WHERE matricola = 2 ";
  $resultSet = $db->query($sql);
       print_r($resultSet->fetchObject());
     
?>
Web Hosting

Leave a Reply

WP to LinkedIn Auto Publish Powered By : XYZScripts.com