SQLite - PHP
Dans ce chapitre, vous apprendrez à utiliser SQLite dans les programmes PHP.
Installation
L'extension SQLite3 est activée par défaut à partir de PHP 5.3.0. Il est possible de le désactiver en utilisant--without-sqlite3 au moment de la compilation.
Les utilisateurs Windows doivent activer php_sqlite3.dll pour utiliser cette extension. Cette DLL est incluse dans les distributions Windows de PHP à partir de PHP 5.3.0.
Pour des instructions d'installation détaillées, veuillez consulter notre tutoriel PHP et son site officiel.
API d'interface PHP
Voici des routines PHP importantes qui peuvent suffire à votre besoin pour travailler avec la base de données SQLite de votre programme PHP. Si vous recherchez une application plus sophistiquée, vous pouvez consulter la documentation officielle PHP.
N ° Sr. | API et description |
---|---|
1 | public void SQLite3::open ( filename, flags, encryption_key ) Ouvre la base de données SQLite 3. Si la construction inclut le chiffrement, elle tentera d'utiliser la clé. Si le nom de fichier est donné comme':memory:', SQLite3 :: open () créera une base de données en mémoire dans la RAM qui ne durera que pendant la durée de la session. Si le nom de fichier est le nom de fichier de périphérique réel, SQLite3 :: open () tente d'ouvrir le fichier de base de données en utilisant sa valeur. Si aucun fichier de ce nom n'existe, un nouveau fichier de base de données de ce nom est créé. Indicateurs facultatifs utilisés pour déterminer comment ouvrir la base de données SQLite. Par défaut, open utilise SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE. |
2 | public bool SQLite3::exec ( string $query ) Cette routine fournit un moyen rapide et facile d'exécuter des commandes SQL fournies par l'argument sql, qui peut être constitué de plusieurs commandes SQL. Cette routine est utilisée pour exécuter une requête sans résultat sur une base de données donnée. |
3 | public SQLite3Result SQLite3::query ( string $query ) Cette routine exécute une requête SQL, renvoyant un SQLite3Result objet si la requête renvoie des résultats. |
4 | public int SQLite3::lastErrorCode ( void ) Cette routine renvoie le code de résultat numérique de la dernière requête SQLite ayant échoué. |
5 | public string SQLite3::lastErrorMsg ( void ) Cette routine renvoie un texte en anglais décrivant la dernière requête SQLite ayant échoué. |
6 | public int SQLite3::changes ( void ) Cette routine renvoie le nombre de lignes de base de données qui ont été mises à jour, insérées ou supprimées par l'instruction SQL la plus récente. |
sept | public bool SQLite3::close ( void ) Cette routine ferme une connexion à la base de données précédemment ouverte par un appel à SQLite3 :: open (). |
8 | public string SQLite3::escapeString ( string $value ) Cette routine renvoie une chaîne qui a été correctement échappée pour une inclusion sûre dans une instruction SQL. |
Se connecter à la base de données
Le code PHP suivant montre comment se connecter à une base de données existante. Si la base de données n'existe pas, elle sera créée et finalement un objet de base de données sera renvoyé.
<?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";
}
?>
Maintenant, exécutons le programme ci-dessus pour créer notre base de données test.dbdans le répertoire courant. Vous pouvez changer votre chemin selon vos besoins. Si la base de données est créée avec succès, elle affichera le message suivant -
Open database successfully
Créer une table
Le programme PHP suivant sera utilisé pour créer une table dans la base de données précédemment créée.
<?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();
?>
Lorsque le programme ci-dessus est exécuté, il créera la table COMPANY dans votre test.db et il affichera les messages suivants -
Opened database successfully
Table created successfully
Opération INSERT
Le programme PHP suivant montre comment créer des enregistrements dans la table COMPANY créée dans l'exemple ci-dessus.
<?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();
?>
Lorsque le programme ci-dessus est exécuté, il créera les enregistrements donnés dans la table COMPANY et affichera les deux lignes suivantes.
Opened database successfully
Records created successfully
Opération SELECT
Le programme PHP suivant montre comment récupérer et afficher les enregistrements de la table COMPANY créée dans l'exemple ci-dessus -
<?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();
?>
Lorsque le programme ci-dessus est exécuté, il produira le résultat suivant.
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
Opération UPDATE
Le code PHP suivant montre comment utiliser l'instruction UPDATE pour mettre à jour n'importe quel enregistrement, puis extraire et afficher les enregistrements mis à jour de la table 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();
?>
Lorsque le programme ci-dessus est exécuté, il produira le résultat suivant.
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
Opération DELETE
Le code PHP suivant montre comment utiliser l'instruction DELETE pour supprimer n'importe quel enregistrement, puis récupérer et afficher les enregistrements restants de la table 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();
?>
Lorsque le programme ci-dessus est exécuté, il produira le résultat suivant.
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