====== Introduzione a PDO ======
Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **//29/01/2011//** \\ \\
[[http://www.php.net/manual/en/book.pdo.php|PDO]] è una classe php in grado di "pilotare" diversi tipi di database ed è disponibile da php 5.1 in poi. Anche se è comunque installabile sottoforma di estensione PECL anche in php 5.0. \\
La classe supporta attualmente i seguenti database: Mysql, PostgreSQL, Sqlite, Firebird, IBM Informix Dynamic Server,IBM DB2, Oracle,4D, Cubrid e tutti i database interfacciabili con Odbc. Di seguito una piccola introduzione alla classe con i suoi metodi base prendendo in esame un database Mysql di esempio con una tabella di nome anagrafica come la seguente: \\ \\
**anagrafica**
id nominativo email
1 Fabio Di Matteo suaemail@gramail.com
2 Chester psdasda@libero.it
4 Portatile portatile@notejbook.it
5 test0 test0@testo.it
===== Connessione al database =====
Con queste istruzioni ci connettiamo alla base di dati e verifichiamo che tutto vada a buon fine.
PDO TEST
Test driver PDO per php - Connessione
";
}
/* Nel caso in cui ci siano errori durante la connessione,
* li cattura nella variabile $myerror e li stampa */
catch (PDOException $myerror)
{
print "Problemi nella connessione al database:
" . $myerror->getMessage() . "
";
}
?>
===== Mostriamo il risultato di una select =====
Generiamo una tabella html con il risultato di una select.
PDO TEST
Test driver PDO per php - Select
";
//Eseguiamo una query (Select)
$sql = 'SELECT * FROM anagrafica';
//Preparo le strutture per contenere la query
$stmt = $dbh->prepare($sql);
//Controllo se la query è andata a buon fine
if (! $stmt->execute() ) echo "Errore nella query.";
/* Associo un campo ad una variabile */
$stmt->bindColumn('nominativo', $nominativo);
$stmt->bindColumn('email', $email);
/*Recupero i dati in una tabella*/
echo '';
while ($row = $stmt->fetch(PDO::FETCH_BOUND)) {
echo"". $nominativo . " | " . $email . " |
" ;
}
echo '
' ;
//Chiude la connessione
$dbh = null;
}
//Nel caso in cui ci siano errori, li cattura nella variabile $myerror e li stampa
catch (PDOException $myerror)
{
print "Problemi nella connessione al database:
" . $myerror->getMessage() . "
";
}
?>
===== Inseriamo dei record tramite una insert =====
PDO TEST
Test driver PDO per php - Insert
";
//Eseguiamo una query (Select)
$sql = "INSERT INTO `anagrafica` (
`nominativo` ,
`email`
)VALUES (
'test0',
'test0@testo.it'
);";
//Preparo le strutture per contenere la query
$stmt = $dbh->prepare($sql);
//Controllo se la query è andata a buon fine
if (! $stmt->execute() )
{
echo "Errore nella query.";
}else{
echo "Inserimento eseguito con successo.";
}
//Chiude la connessione
$dbh = null;
}
//Nel caso in cui ci siano errori, li cattura nella variabile $myerror e li stampa
catch (PDOException $myerror)
{
print "Problemi nella connessione al database:
" . $myerror->getMessage() . "
";
}
?>
===== Modifichiamo i dati inseriti =====
PDO TEST
Test driver PDO per php - Update
";
//Eseguiamo una query (Select)
$sql = "UPDATE `anagrafica` SET `nominativo` = 'test0 (modificato OK)',
`email` = 'test0@testo.it (modificato OK)'
WHERE `id` =5;";
//Preparo le strutture per contenere la query
$stmt = $dbh->prepare($sql);
//Controllo se la query è andata a buon fine
if (! $stmt->execute() )
{
echo "Errore nella query.";
}else{
echo "Modifica eseguita con successo.";
}
//Chiude la connessione
$dbh = null;
}
//Nel caso in cui ci siano errori, li cattura nella variabile $myerror e li stampa
catch (PDOException $myerror)
{
print "Problemi nella connessione al database:
" . $myerror->getMessage() . "
";
}
?>
===== Cancelliamo un record =====
PDO TEST
Test driver PDO per php - Delete
";
//Eseguiamo una query (Select)
$sql = "DELETE from `anagrafica` WHERE `id` =2;";
//Preparo le strutture per contenere la query
$stmt = $dbh->prepare($sql);
//Controllo se la query è andata a buon fine
if (! $stmt->execute() )
{
echo "Errore nella query.";
}else{
echo "Record cancellato con successo.";
}
//Chiude la connessione
$dbh = null;
}
//Nel caso in cui ci siano errori, li cattura nella variabile $myerror e li stampa
catch (PDOException $myerror)
{
print "Problemi nella connessione al database:
" . $myerror->getMessage() . "
";
}
?>