SQLite - PHP
In questo capitolo imparerai come usare SQLite nei programmi PHP.
Installazione
L'estensione SQLite3 è abilitata per impostazione predefinita a partire da PHP 5.3.0. È possibile disabilitarlo utilizzando--without-sqlite3 in fase di compilazione.
Gli utenti Windows devono abilitare php_sqlite3.dll per utilizzare questa estensione. Questa DLL è inclusa nelle distribuzioni Windows di PHP a partire da PHP 5.3.0.
Per istruzioni dettagliate sull'installazione, controlla il nostro tutorial PHP e il suo sito web ufficiale.
API dell'interfaccia PHP
Di seguito sono riportate importanti routine PHP che possono essere sufficienti per lavorare con il database SQLite dal tuo programma PHP. Se stai cercando un'applicazione più sofisticata, puoi consultare la documentazione ufficiale di PHP.
Sr.No. | API e descrizione |
---|---|
1 | public void SQLite3::open ( filename, flags, encryption_key ) Apre il database SQLite 3. Se la build include la crittografia, tenterà di utilizzare la chiave. Se il nome del file è dato come':memory:', SQLite3 :: open () creerà un database in memoria nella RAM che dura solo per la durata della sessione. Se il nome del file è il nome del file del dispositivo effettivo, SQLite3 :: open () tenta di aprire il file del database utilizzando il suo valore. Se non esiste alcun file con quel nome, viene creato un nuovo file di database con quel nome. Flag opzionali utilizzati per determinare come aprire il database SQLite. Per impostazione predefinita, open utilizza SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE. |
2 | public bool SQLite3::exec ( string $query ) Questa routine fornisce un modo semplice e veloce per eseguire i comandi SQL forniti dall'argomento sql, che può essere costituito da più di un comando SQL. Questa routine viene utilizzata per eseguire una query senza risultati su un determinato database. |
3 | public SQLite3Result SQLite3::query ( string $query ) Questa routine esegue una query SQL, restituendo un file SQLite3Result oggetto se la query restituisce risultati. |
4 | public int SQLite3::lastErrorCode ( void ) Questa routine restituisce il codice di risultato numerico della richiesta SQLite non riuscita più recente. |
5 | public string SQLite3::lastErrorMsg ( void ) Questa routine restituisce testo in inglese che descrive la richiesta SQLite non riuscita più recente. |
6 | public int SQLite3::changes ( void ) Questa routine restituisce il numero di righe del database che sono state aggiornate, inserite o eliminate dall'istruzione SQL più recente. |
7 | public bool SQLite3::close ( void ) Questa routine chiude una connessione al database precedentemente aperta da una chiamata a SQLite3 :: open (). |
8 | public string SQLite3::escapeString ( string $value ) Questa routine restituisce una stringa di cui è stato eseguito correttamente l'escape per l'inclusione sicura in un'istruzione SQL. |
Connetti al database
Il seguente codice PHP mostra come connettersi a un database esistente. Se il database non esiste, verrà creato e infine verrà restituito un oggetto database.
<?php
class MyDB extends SQLite3 {
function __construct() {
$this->open('test.db');
}
}
$db = new MyDB();
if(!$db) {
echo $db->lastErrorMsg();
} else {
echo "Opened database successfully\n";
}
?>
Ora, eseguiamo il programma sopra per creare il nostro database test.dbnella directory corrente. Puoi cambiare il tuo percorso secondo le tue esigenze. Se il database è stato creato correttamente, verrà visualizzato il seguente messaggio:
Open database successfully
Crea una tabella
Il seguente programma PHP verrà utilizzato per creare una tabella nel database precedentemente creato.
<?php
class MyDB extends SQLite3 {
function __construct() {
$this->open('test.db');
}
}
$db = new MyDB();
if(!$db) {
echo $db->lastErrorMsg();
} else {
echo "Opened database successfully\n";
}
$sql =<<<EOF
CREATE TABLE COMPANY
(ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL);
EOF;
$ret = $db->exec($sql);
if(!$ret){
echo $db->lastErrorMsg();
} else {
echo "Table created successfully\n";
}
$db->close();
?>
Quando il programma sopra viene eseguito, creerà la tabella AZIENDA nel tuo file test.db e mostrerà i seguenti messaggi -
Opened database successfully
Table created successfully
Operazione INSERT
Il seguente programma PHP mostra come creare record nella tabella AZIENDA creata nell'esempio precedente.
<?php
class MyDB extends SQLite3 {
function __construct() {
$this->open('test.db');
}
}
$db = new MyDB();
if(!$db){
echo $db->lastErrorMsg();
} else {
echo "Opened database successfully\n";
}
$sql =<<<EOF
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Paul', 32, 'California', 20000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Allen', 25, 'Texas', 15000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );
EOF;
$ret = $db->exec($sql);
if(!$ret) {
echo $db->lastErrorMsg();
} else {
echo "Records created successfully\n";
}
$db->close();
?>
Quando il programma sopra viene eseguito, creerà i record dati nella tabella AZIENDA e visualizzerà le seguenti due righe.
Opened database successfully
Records created successfully
Operazione SELECT
Il seguente programma PHP mostra come recuperare e visualizzare i record dalla tabella COMPANY creata nell'esempio sopra -
<?php
class MyDB extends SQLite3 {
function __construct() {
$this->open('test.db');
}
}
$db = new MyDB();
if(!$db) {
echo $db->lastErrorMsg();
} else {
echo "Opened database successfully\n";
}
$sql =<<<EOF
SELECT * from COMPANY;
EOF;
$ret = $db->query($sql);
while($row = $ret->fetchArray(SQLITE3_ASSOC) ) {
echo "ID = ". $row['ID'] . "\n";
echo "NAME = ". $row['NAME'] ."\n";
echo "ADDRESS = ". $row['ADDRESS'] ."\n";
echo "SALARY = ".$row['SALARY'] ."\n\n";
}
echo "Operation done successfully\n";
$db->close();
?>
Quando il programma di cui sopra viene eseguito, produrrà il seguente risultato.
Opened database successfully
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 20000
ID = 2
NAME = Allen
ADDRESS = Texas
SALARY = 15000
ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000
ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000
Operation done successfully
Operazione UPDATE
Il seguente codice PHP mostra come utilizzare l'istruzione UPDATE per aggiornare qualsiasi record e quindi recuperare e visualizzare i record aggiornati dalla tabella COMPANY.
<?php
class MyDB extends SQLite3 {
function __construct() {
$this->open('test.db');
}
}
$db = new MyDB();
if(!$db) {
echo $db->lastErrorMsg();
} else {
echo "Opened database successfully\n";
}
$sql =<<<EOF
UPDATE COMPANY set SALARY = 25000.00 where ID=1;
EOF;
$ret = $db->exec($sql);
if(!$ret) {
echo $db->lastErrorMsg();
} else {
echo $db->changes(), " Record updated successfully\n";
}
$sql =<<<EOF
SELECT * from COMPANY;
EOF;
$ret = $db->query($sql);
while($row = $ret->fetchArray(SQLITE3_ASSOC) ) {
echo "ID = ". $row['ID'] . "\n";
echo "NAME = ". $row['NAME'] ."\n";
echo "ADDRESS = ". $row['ADDRESS'] ."\n";
echo "SALARY = ".$row['SALARY'] ."\n\n";
}
echo "Operation done successfully\n";
$db->close();
?>
Quando il programma di cui sopra viene eseguito, produrrà il seguente risultato.
Opened database successfully
1 Record updated successfully
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 25000
ID = 2
NAME = Allen
ADDRESS = Texas
SALARY = 15000
ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000
ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000
Operation done successfully
Operazione DELETE
Il seguente codice PHP mostra come utilizzare l'istruzione DELETE per eliminare qualsiasi record e quindi recuperare e visualizzare i record rimanenti dalla tabella COMPANY.
<?php
class MyDB extends SQLite3 {
function __construct() {
$this->open('test.db');
}
}
$db = new MyDB();
if(!$db) {
echo $db->lastErrorMsg();
} else {
echo "Opened database successfully\n";
}
$sql =<<<EOF
DELETE from COMPANY where ID = 2;
EOF;
$ret = $db->exec($sql);
if(!$ret){
echo $db->lastErrorMsg();
} else {
echo $db->changes(), " Record deleted successfully\n";
}
$sql =<<<EOF
SELECT * from COMPANY;
EOF;
$ret = $db->query($sql);
while($row = $ret->fetchArray(SQLITE3_ASSOC) ) {
echo "ID = ". $row['ID'] . "\n";
echo "NAME = ". $row['NAME'] ."\n";
echo "ADDRESS = ". $row['ADDRESS'] ."\n";
echo "SALARY = ".$row['SALARY'] ."\n\n";
}
echo "Operation done successfully\n";
$db->close();
?>
Quando il programma di cui sopra viene eseguito, produrrà il seguente risultato.
Opened database successfully
1 Record deleted successfully
ID = 1
NAME = Paul
ADDRESS = California
SALARY = 25000
ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000
ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000
Operation done successfully