Connessione a SQLite con PHP
Qualche giorno fa abbiamo visto come connetterci a un db SQLite con Python.
Oggi vediamo la stessa con PHP.
Anche qua, se l'applicazione non è grande, potrebbe non servire un db come MySQL, e quindi potremmo usare un semplice SQLite e semplificarci un pò la vita.
Anche per PHP non c'è bisgno di nessun componente aggiuntivo; ha già tutte le funzioni per connessione e quant'altro.
Ma noi useremo anche PDO, e questo perchè così facendo, possiamo portarci dietro già le nostre funzioni!
Inoltre su Aruba sono stato costretto a farlo, in quanto le funzioni sqlite3 sono disabilitate per default.
In questo caso specifico, poi, vedremo come codificare il tutto in JSON.
Nel mio caso questo è servito per esporre i dati a una app Android usando lo stesso db di una app dekstop scritta in Java, e una web app scritta in PHP.
Così facendo ho un unico piccolo db per tutto!
Ecco qua un esempio:
$db = new PDO("sqlite:films.sqlite");
$q = 'SELECT * FROM film ORDER BY title';
$prepare = $db->prepare($q);
$prepare->execute();
$res = $prepare->fetchAll();
$arr = array();
foreach ($res as $r) {
$arr[] = array(
"id" => $r['id'],
"title" => $r['title'],
"released" => $r['released'],
"genre" => $r['genre'],
"director" => $r['director'],
"writer" => $r['writer'],
"actors" => $r['actors'],
"plot" => $r['plot'],
"poster" => $r['poster'],
"runtime" => $r['runtime'],
"imdb_id" => $r['imdb_id']
);
}
echo json_encode($arr);
Al costruttore di PDO indichiamo il driver da usare (sqlite) e il percorso del file (che deve risiedere sul server ovviamente).
Poi usiamo le stesse identiche funzioni che useremmo per MySQL.
Mi sembra abbastanza easy!
Ciao!!
php sqlite sqlite3 json database pdo python
6 Commenti
ho diverse pagine dove avevo scritto il nome del database. Adesso vorrei rinominarlo, come faccio per evitare di fare questa operazione in tutte le pagine? Posso utilizzare un require("db.inc"); dove all'interno scriverò: $sqlitedb = 'nome_nuovo_db'; grazie
26/06/2018Si\' sono uno \"smemorato\" , nell\'aprire il ticket ho trovato un vecchio ticket del 2013 in cui mi avevano gia\' risposto che il servizio Hosting Aruba Windows e\' configurato con PDO disabilitato. Chi vuole usare PHP PDO deve usare Linux che e\' anche su PHP 5.3.
10/11/2014bhe un pò mi sembra strano perchè sqlite è multipiattaforma, quindi dovrebbe essere disponibile anche su windows. tienici aggiornati!
10/11/2014Allora l\'unica differenza e\' che il mio hosting e Windoz piuttosto che linux. Provo a chiedere via ticket ad Aruba. Grazie per la tua risposta Diego
10/11/2014ciao! io ho questo come hosting: http://hosting.aruba.it/hosting_con_spazio.asp?offerta=2 quindi hosting linux base. per quanto riguarda il tuo comando, questo il risultato: driver pdo: mysql driver pdo: sqlite driver pdo: sqlite2 per essere precisi, non l\'ho dovuto richiedere il support a sqlite, era già disponibile (sia nell versione 1 che nella versione 2). a te che problemi da?
10/11/2014Volevo sapere che hosting hai con Aruba, anche io volevo usare sqlite ma sia oggi dopo aver letto il tuo messaggio , sia un annetto fa: \"Fatal error: Uncaught exception \'PDOException\' with message \'could not find driver\' \" per curiosita\' se fai la lista dei pdo driver cosa ti da\' foreach (PDO::getAvailableDrivers() as $driver) { echo \' driver pdo: \' . $driver . \'<br />\'; } a me da\' solo mysql ciao e grazie Diego
09/11/2014