PDO: la libreria di persistenza di PHP 5.1



Una delle mancanze più preoccupanti delle vecchie versioni di PHP (dalla 5.0 in giù) era l’assenza di una libreria di accesso al DB al passo con i tempi, che consentisse di connettersi a alle sorgenti di dati indipendentemente  dal tipo di database utilizzato. Nella pratica, ogni database metteva a disposizione un set di istruzioni installabili come modulo aggiuntivo di PHP e, nella sciagurata ipotesi di dover migrare verso altro DB, tutta la parte di accesso ai dati della nostra applicazione andava riscritta. Questo problema è stato risolto da php 5.1 tramite la libreria PDO.

In PDO, per accedere ad un db bastano due cose:

  1. Installare il driver di accesso al db
  2. Fornire all’applicazione una stringa di connessione opportunamente formattata.

In questo articolo vedremo un semplice esempio di connessione ad un database MySql tramite DBO.

La stringa di connessione per collegarsi al database ‘miodatabase’ installato sulla macchina locale (localhost) sarà la seguente:

$dsn = ‘mysql:host=localhost;dbname=miodatabase’;

Successivamente va avviata la connessione istanziando la classe PDO come segue:

$db = new PDO($dsn , $nome_utente, $password);

A questo punto è possibile eseguire una query sul db, distinguendo tra query di interrogazione e query di scrittura/aggiornamento dei dati. Si supponga di avere una tabella chiamata UTENTI contenente i due campi NOME e COGNOME.

  • Query di interrogazione:

$sql = “select NOME, COGNOME from UTENTI”;
$results = $db->query($sql);
foreach ($results as $row) {
echo $row[‘NOME’] . ‘ – ‘ .  $row[‘COGNOME ‘];
}

  • Query di scrittura/aggiornamento dei dati

$sql = (“insert into UTENTI values (‘pinco’, ‘pallino’)”);
$db->exec($sql);

DBO mette a disposizione altre interessanti caratteristiche quali l’esecuzione di prepared statements e la gestione di transazioni. Per maggiori informazioni, si può consultare la documentazione ufficiale.

20091114mysql_logo

Annunci sponsorizzati:
Condividi su Facebook Condividi su Twitter!
Pinterest