PEAR::DB è un insieme di classi nato per fornire un meccanismo di astrazione dal database. Perchè è importante? Pensate ad un grosso progetto che usi MySQL come DBMS, e che debba poi migrare ad MSSQL. Nei sorgenti delle pagine PHP si dovrebbero modificare tutte le chiamate alle funzioni mysql_ in mssql_.
La soluzione è rimpiazzare tutte le funzioni per un preciso DBMS con una classe che si occupi di redirigere le chiamate al DBMS giusto, secondo le nostre impostazioni. PEAR::DB svolge esattamente questa funzione.
Per usare PEAR::DB, è necessario includere la libreria DB.php con l’ istruzione PHP require_once:
require_once ‘DB.php’;
CONNESSIONE AL DB:
La connessione al database è una operazione che richiede due passi:
È poi utile usare il metodo DB::isError() per verificare che la connessione sia andata a buon fine.
Per disconnettersi dal DBMS si usa la funzione DB::Disconnect.
require_once ‘DB.php’;
$user = ‘webappXY’;
$pass = ‘password’;
$host = ‘localhost’;
$db_name = ‘webappXY’;
$dsn = “mysql://$user:$pass@$host/$db_name”; $db = DB::Connect($dsn);
if( DB::isError($db) ) {
die($db->getMessage());
}
// operazioni sul db
// ci disconnettiamo
$db->disconnect();
ESEGUIRE UNA QUERY:
Ogni tipo di query (SELECT, INSERT, UPDATE, DELETE…) viene inviata al DBMS tramite il metodo DB_COMMON::query(). Questo metodo richiede, come parametro, la query SQL da inviare al DBMS al quale si è connesso tramite DB::Connect().
// $db è l’oggetto restituito da DB::connect
Eseguo la query
$sql = ‘SELECT * FROM test’;
$rs = $db->query($sql);
//Verifico gli eventuali errori
if( DB::isError($rs) ) {
echo “Attenzione!Si è verificato un errore \”$sql\”.”;
}
die($rs->getMessage()); }
Recuperare il result-set di una SELECT:
Per poter mostrare i risultati di una query di selezione, si usa il metodo DB_RESULT::fetchRow(). Tale metodo accetta, come primo parametro (opzionale), un intero che rappresenta il metodo con cui dovranno essere restituiti i valori. Questo valore può essere uno dei seguenti:
Il metodo di accesso può anche essere settato tramite il metodo DB_COMMON::setFetchMode(), in modo che tutte le chiamate a DB_RESULT::fetchRow() senza parametri assumeranno il metodo di accesso stabilito nella chiamata a DB_COMMON::setFetchMode().
// $rs è l’oggetto restituito da $db->query();
while( $row = $rs->fetchRow(DB_FETCHMODE_ASSOC) ) {
echo ” ” . $row['id'];
echo ” ” . $row['head'];
echo ” ” . $row['body'];
}
Righe modificate da INSERT, UPDATE, DELETE:
Per verificare quante righe siano state modificate da una query di aggiornamento, si usa il metodo DB_COMMON::affectedRows(). Tale metodo non richiede parametri, e restituisce il numero di righe modificate.
$sql = “INSERT INTO `test` (`id`, `head`, `body`) VALUES (”, ‘prova veloce’, ‘testo non molto lungo’);”;
// Esecuzione query …
$rs = $db->query($sql);
// scopriamo quante righe sono state modificate
$affected_rows = $db->affectedRows();
echo “Riga/Righe modificata/e: ” . $affected_rows . “
“
Hai trovato interessante questo post? Iscriviti al nostro Feed RSS per non perderti nemmeno un aggiornamento. Grazie per la visita... a presto!
Post che potrebbero interessarti:
Leave a reply