Autore: Fabio Di Matteo
Ultima revisione: 29/01/2011
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
Con queste istruzioni ci connettiamo alla base di dati e verifichiamo che tutto vada a buon fine.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>PDO TEST</title> </head> <body> <strong>Test driver PDO per php - Connessione</strong><br><br><br> <?php try { //Instaura la connessione $dbh = new PDO('mysql:host=localhost;dbname=pdotest', "root", "miapass"); //Chiude la connessione $dbh = null; echo "Connessione al database riuscita.<br/>"; } /* 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: <br>" . $myerror->getMessage() . "<br/>"; } ?> </body> </html>
Generiamo una tabella html con il risultato di una select.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>PDO TEST</title> </head> <body> <strong>Test driver PDO per php - Select</strong><br><br><br> <?php try { //Instaura la connessione $dbh = new PDO('mysql:host=localhost;dbname=pdotest', "root", "miapass"); echo "Connessione al database riuscita.<br/>"; //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 "<b>Errore nella query.</b>"; /* Associo un campo ad una variabile */ $stmt->bindColumn('nominativo', $nominativo); $stmt->bindColumn('email', $email); /*Recupero i dati in una tabella*/ echo '<table border="1">'; while ($row = $stmt->fetch(PDO::FETCH_BOUND)) { echo"<tr><td>". $nominativo . "</td><td>" . $email . "</td></tr>" ; } echo '</table>' ; //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: <br>" . $myerror->getMessage() . "<br/>"; } ?> </body> </html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>PDO TEST</title> </head> <body> <strong>Test driver PDO per php - Insert</strong><br><br><br> <?php try { //Instaura la connessione $dbh = new PDO('mysql:host=localhost;dbname=pdotest', "root", "miapass"); echo "Connessione al database riuscita.<br/>"; //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 "<b>Errore nella query.</b>"; }else{ echo "<b>Inserimento eseguito con successo.</b>"; } //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: <br>" . $myerror->getMessage() . "<br/>"; } ?> </body> </html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>PDO TEST</title> </head> <body> <strong>Test driver PDO per php - Update</strong><br><br><br> <?php try { //Instaura la connessione $dbh = new PDO('mysql:host=localhost;dbname=pdotest', "root", "miapass"); echo "Connessione al database riuscita.<br/>"; //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 "<b>Errore nella query.</b>"; }else{ echo "<b>Modifica eseguita con successo.</b>"; } //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: <br>" . $myerror->getMessage() . "<br/>"; } ?> </body> </html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>PDO TEST</title> </head> <body> <strong>Test driver PDO per php - Delete</strong><br><br><br> <?php try { //Instaura la connessione $dbh = new PDO('mysql:host=localhost;dbname=pdotest', "root", "miapass"); echo "Connessione al database riuscita.<br/>"; //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 "<b>Errore nella query.</b>"; }else{ echo "<b>Record cancellato con successo.</b>"; } //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: <br>" . $myerror->getMessage() . "<br/>"; } ?> </body> </html>