Nell'articolo Php e SQLite, una piccola grande novità abbiamo presentato SQLite, una libreria di database open source relativamente recente ma dotata di caratteristiche molto interessanti, tanto che con l'avvento di PHP 5 verrà supportata in modo nativo.
Ci siamo già occupati dell'installazione per PHP 4 e di definire quali siano le principali differenze rispetto ad un RDBMS (Relational Database Management System) come MySQL o PostgreSQL, quindi è giunto il momento di esaminare un po' più dettagliatamente funzionalità e particolarità di questo database.
PHP mette a disposizione dello sviluppatore una serie di funzioni che non risulteranno del tutto nuove a chi ha un po' di dimestichezza con l'API (Application Program Interface) per MySQL, pertanto nei paragrafi successivi prenderemo in considerazione soltanto quelle che potrebbero indurre qualche perplessità.
Ricordiamo che SQLite non è un server e che un database SQLite è costituito da un file binario accessibile direttamente, quindi risulta influenzato dalle restrizioni imposte dai Chmod con Php e da configurazioni legate a Php come il Safe Mode e configurazioni sicure.
L'accesso diretto ad un database SQLite non richiede username e password, mentre l'accesso remoto (http:// o ftp://), a differenza di quanto avviene nel caso dei file DBM, non è supportato dall'API Php: in entrambi i casi non si tratta di vere e proprie limitazioni, infatti stiamo parlando di un database engine pensato per essere utilizzato sulla stessa macchina in cui opera Php.
sqlite_open() consente di creare un database o di aprirlo se già esiste,
resource sqlite_open ( string filename [, int mode [, string &error_message]])
Il primo argomento, il file, è l'unico obbligatorio: per evitare effetti imprevedibili è preferibile utilizzare un percorso fisico assoluto (facilmente ricostruibile con funzioni come getcwd() e realpath()).
Al posto di un file presente sull'hard disk possiamo anche utilizzare ":memory:" per creare un database temporaneo (con vita pari alla durata dello script) residente soltanto memoria, una caratteristica che può tornare utile per caricare/scaricare provvisoriamente dati durante alcune operazioni di manipolazione.
"mode" per ora non ha nessun ruolo se non quello di segnaposto, ma in futuro avrà il compito di definire la modalità di accesso al file.
Il terzo argomento rappresenta un contenitore per gli errori in caso di fallimento al momento dell'apertura, tuttavia non sembra funzionare come dovrebbe (specialmente in Windows), quindi al momento è consigliabile utilizzare sqlite_open() come segue.
<?php
/* [LISTATO 1]
Attiviamo il tracking degli errori:
In caso di errore soppresso con "@" troveremo il messaggio
nella variabile PHP predefinita "$php_errormsg".
Si tratta di un modo per sopperire al non funzionamento del terzo argomento di sqlite_open
*/
ini_set('track_errors', '1') ;
/*
Percorso assoluto del database
*/
$dbFile = realpath('./').'/testDB1' ;
$dbLink=@sqlite_open($dbFile) ;
/*
Se qualcosa è andato storto gestiamo l'errore e stampiamo un avviso
*/
if(!is_resource($dbLink)){
$sqliteError= "Si è verificato un errore al momento dell'apertura/creazione del database <br>\n";
$sqliteError.= '<strong>'.$php_errormsg.'</strong>' ;
$php_errormsg='' ;
die($sqliteError) ;
}
//altre operazioni
/*
Chiude il database
*/
sqlite_close($dbLink) ;
?>
|
SQL Maintenance Solution: soluzione free per la manutenzione di SQL Server |
Guida AccessIniziare a sviluppare database grazie alla potenza visuale offerta... |
Guida SQL Server 2005L'RDBMS di Microsoft è uno dei più utilizzati, soprattutto in ambito... |
Guida OracleScoprire ed approfondire un dei più importanti RDBMS sulla scena... |
Ogni settimana, in due distinte newsletter: notizie a approfondimenti su MySQL, SQLserver e Oracle.
Iscriviti alla newsletter