Uno dei punti di forza di Php è la flessibilità. In particolare Php ha la capacità di potersi interfacciare ad elevato numero di database ma per fare ciò è necessario conoscere ed utilizzare un set di API differente da db a db e tutto questo a discapito della portabilità. Ma la libreria Adodb viene in nostro aiuto.
I progetti si sviluppano in base a criteri stabiliti in partenza ed in base a questi criteri prendiamo delle decisioni. Uno di questi è la scelta del db che molto spesso, per progetti in Php, ricade su Mysql. Per tanto, svilupperemo il nostro progetto preoccupandoci di far parlare Php con Mysql. Ma se doveste per qualunque ragione cambiare db e passare a Oracle o Microsoft Mssql?
Già, bisogna riscrivere un po’ di codice, in particolare quello relativo all’interfacciamento al db e questo perchè per collegarci MySQL utilizziamo mysql_connect() mentre quando decidiamo di passare ad Oracle o a Microsoft SQL Server, dobbiamo usare ocilogon() o mssql_connect() rispettivamente.
Adodb sta per Active Data Objects DataBase ed è una libreria che fornisce un’unica API per interfacciarsi ad uno dei DBMS supportati che al momento sono MySQL, PostgreSQL, Interbase, Firebird, Informix, Oracle, MS SQL, Foxpro, Access, ADO, Sybase, FrontBase, DB2, SAP DB, SQLite, Netezza, LDAP, and generic ODBC, ODBTP.
Per utilizzare Adodb dobbiamo prima di tutto includere il file adodb.inc.php, creare l’oggetto connessione ADONewConnection e connetterci al database con il metodo Connect dell’oggetto appena creato:
include("adodb/adodb.inc.php");
$conn = &ADONewConnection('tipo_database‘);
$conn->Connect(host, db_user, db_passwod, db_name);
dove in tipo_database dobbiamo specificare il tipo di database a cui connetterci (’mysql’, ‘postgres’, etc…); in funzione di questo parametro Adodb includerà il driver necessario che implementa la API corretta per il dbms selezionato (adodb/drivers/adodb-mssql.inc.php, adodb/drivers/adodb-postgres.inc.php, etc…)
Dopo aver creato l’oggetto connessione, dobbiamo interrogare il db utilizzando il metodo Execute
$sql = "SELECT * FROM prodotti"; $rs = $conn->Execute($sql);
Il metodo Execute restituisce un’istanza dell’oggetto ADORecordSet dal quale possiamo leggere i record della query. Inizialmente
while ($row = $rs->FetchRow()) {
echo $row['nome_prodotto']."<br/>";
}
L’oggetto recorset punta al prima riga (row) e per leggere tutti i dati dobbiamo muovere il puntatore su tutte le righe restituite dal db tramite il ciclo while. Il metodo FetchRow() legge i dati (fetch) della riga corrente, li restituisce in un array ($row) e muove il puntatore alla record successivo. Quando arriviamo alla fine del recordset la proprietà EOF (end of file) dell’oggetto recordset diventa true e il ciclo finisce.
Adodb ci fornisce molte funzioni utilissime tra cui il metodo qstr dell’oggetto ADONewConnection che si preoccupa di trattare l’input (escaping) per evitare problemi di SQL-injection (l’equivalente di mysql_real_escape_string). Ogni dbms infatti vuole i dati filtrati in un certo modo, qstr si preoccupa di utilizzare il metodo migliore.
Per approfondimenti

Entries (RSS)