====== 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"" ; } echo '
". $nominativo . "" . $email . "
' ; //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() . "
"; } ?>