CXXXVII. Fonctions SQLite
Cette extension fait l'interface avec le moteur de base
SQLite Embeddable SQL Database Engine.
SQLite est une bibliothèque C qui
implémente un moteur de bases de données SQL embarqué.
Les programmes qui utilisent SQLite
peuvent disposer d'un accès à une base de données SQL, sans avoir à
faire tourner d'autre processus serveur.
SQLite n'est pas un logiciel client pour se
connecter à un grand nom des bases de données. SQLite
est le serveur. La bibliothèque SQLite
lit et écrit directement dans les fichiers de bases de données
sur le disque.
Lisez le fichier d'installation, qui est fourni avec la distribution.
Ou bien, utilisez simplement l'installeur PEAR :
pear install sqlite.
SQLite est déjà fourni avec PHP et vous
n'avez pas besoin de télécharger d'autres logiciels.
Les utilisateurs de Windows peuvent télécharger la version DLL de l'extension
SQLite ici :
php_sqlite.dll.
Dans la version 5 de PHP, l'extension SQLite ainsi que le moteur sont intégrés et
compilés par défaut.
Installation sur Windows pour les comptes sans privilèges :
Sur les systèmes d'exploitation Windows, les comptes sans privilèges
n'ont pas la variable d'environnement TMP
d'initialisée par défaut. Cela fera créer des fichiers temporaires par
sqlite dans le dossier de windows, ce qui n'est pas voulu. Alors, vous
devriez initialiser la variable d'environnement TMP
pour le serveur web ou dans le compte utilisateur où le serveur web
fonctionne. Si Apache est votre serveur web, vous pouvez accomplir cela
via une directive SetEnv dans votre fichier
httpd.conf. Par exemple :
Si vous êtes incapable d'établir cette configuration à ce niveau du
serveur, vous pouvez implémenter cette configuration dans votre script :
La configuration doit référer à un répertoire à l'intérieur duquel le serveur web a la
permission de créer des fichiers et bien sûr d'y écrire et
supprimer les fichiers créés.
Autrement, vous recevrez le message d'erreur suivant :
malformed database schema -
unable to open a temporary database file for storing temporary tables
Afin de disposer de ces fonctions, vous devez compiler PHP
avec le support SQLite, ou charger
dynamiquement l'extension SQLite depuis
votre fichier php.ini.
Il y a deux ressources, utilisées par l'extension SQLite.
La première est une connexion à la base et
la seconde est un résultat de requête.
Ces constantes sont définies par cette
extension, et ne sont disponibles que si cette extension a été compilée avec
PHP, ou bien chargée au moment de l'exécution.
Les fonctions sqlite_fetch_array() et
sqlite_current() utilisent des constantes pour spécifier
les différents types de résultats. Les constantes sont les suivantes :
Constantes de résultats SQLite - SQLITE_ASSOC
(entier)
Les colonnes sont retournées dans le tableau, en utilisant
le nom de la colonne comme nom d'index.
- SQLITE_BOTH
(entier)
Les colonnes sont retournées dans le tableau, en utilisant
simultanément le nom de la colonne comme nom d'index et un
index numérique.
- SQLITE_NUM
(entier)
Les colonnes sont retournées dans le tableau, en utilisant
une indexation numérique. L'index commence à 0, pour identifier
le premier champ.
Un certain nombre de fonctions peuvent retourner des codes d'état. Les
constantes suivantes sont définies :
Constantes codes d'état SQLite - SQLITE_OK
(entier)
Résultat réussi.
- SQLITE_ERROR
(entier)
Erreur SQL ou base de données manquante.
- SQLITE_INTERNAL
(entier)
Une erreur interne de logique dans SQLite.
- SQLITE_PERM
(entier)
Permission d'accès refusée.
- SQLITE_ABORT
(entier)
Routine de procédure de rappel a demandé un abandon.
- SQLITE_BUSY
(entier)
Le fichier de base de données est verrouillé.
- SQLITE_LOCKED
(entier)
Une table dans la base de données est verrouillée.
- SQLITE_NOMEM
(entier)
Allocation de mémoire échouée.
- SQLITE_READONLY
(entier)
Essai d'écrire dans une base de données en lecture seule.
- SQLITE_INTERRUPT
(entier)
Opération terminée de manière interne.
- SQLITE_IOERR
(entier)
Erreur disque I/O s'est produite.
- SQLITE_CORRUPT
(entier)
L'image disque de la base de données est malformée.
- SQLITE_NOTFOUND
(entier)
(Interne) Table ou enregistrement non trouvé.
- SQLITE_FULL
(entier)
Insertion échouée car la base de données est pleine.
- SQLITE_CANTOPEN
(entier)
Impossible d'ouvrir le fichier de base de données.
- SQLITE_PROTOCOL
(entier)
Erreur du protocole de verrou de base de données.
- SQLITE_EMPTY
(entier)
(Interne) Une table de la base de données est vide.
- SQLITE_SCHEMA
(entier)
Le schéma de base de données a changé.
- SQLITE_TOOBIG
(entier)
Trop de données pour une ligne de la table.
- SQLITE_CONSTRAINT
(entier)
Arrêt dû à une violation de contrainte.
- SQLITE_MISMATCH
(entier)
Type de données incorrect.
- SQLITE_MISUSE
(entier)
Bibliothèque utilisée incorrectement.
- SQLITE_NOLFS
(entier)
Utilisation de fonctionnalités de l'OS non supportées sur l'hôte.
- SQLITE_AUTH
(entier)
Autorisation échouée.
- SQLITE_ROW
(entier)
Processus interne a une autre ligne prête.
- SQLITE_DONE
(entier)
Processus interne a terminé l'exécution.
Représente une base de données SQLite ouverte.
query - Exécute une
requête queryExec - Exécute une requête de
résultat arrayQuery - Exécute une
requête et retourne les résultats dans un tableau singleQuery - Exécute une
requête et retourne soit un tableau pour une seule colonne, soit la valeur de la
première ligne unbufferedQuery -
Exécute une requête non bufférisée lastInsertRowid -
Retourne l'identifiant de la dernière ligne insérée changes - Retourne le
nombre de lignes modifiées par la dernière requête createAggregate -
Enregistre une UDF agrégeante pour les requêtes SQLite createFunction -
Enregistre une fonction utilisateur "classique" UDF pour SQLite busyTimeout -
Configure ou désactive le délai d'attente d'une base SQLite occupée lastErorr - Retourne
le dernier code erreur de la dernière erreur rencontrée fetchColumnTypes -
Retourne un tableau de types de colonnes depuis une table particulière
Représente un jeu de résultats SQLite bufférisé.
fetch - Récupère la ligne
suivante depuis un jeu de résultats en tant que tableau fetchObject - Récupère
la ligne suivante depuis un jeu de résultats en tant qu'objet fetchSingle - Récupère la
première ligne depuis le jeu de résultats en tant que chaîne de caractères fetchAll - Récupère toutes les
lignes depuis le jeu de résultats en tant que tableau de tableaux column - Récupère une colonne
depuis la ligne courante du jeu de résultats numFields - Retourne
le numéro du champ depuis un jeu de résultats fieldName - Retourne
le nom d'un champ particulier depuis le jeu de résultats current - Récupère la ligne
courante depuis le jeu de résultat en tant que tableau key - Retourne l'index de la ligne
courante next - Déplace le pointeur
sur le numéro de ligne suivante valid - Retourne si oui ou non
il reste des lignes de disponibles rewind - Déplace le pointeur
sur le numéro de la première ligne d'un jeu de résultats prev - Déplace le pointeur
sur le numéro de ligne précédent du jeu de résultats hasPrev - Retourne si oui ou
non une ligne précédente est disponible numRows - Retourne le
nombre de lignes dans le jeu de résultats seek - Déplace le pointeur
vers un numéro de ligne précis
Représente un jeu de résultats SQLite non-bufférisé. Les jeux de résultats
non-bufférisés sont séquentiels, déplacement du pointeur uniquement vers
le numéro suivant.
fetch - Récupère
la ligne suivante depuis un jeu de résultats en tant que tableau fetchObject - Récupère
la ligne suivante depuis un jeu de résultats en tant qu'objet fetchSingle - Récupère
la première colonne depuis un jeu de résultats en tant que chaîne de caractères fetchAll - Récupère toutes les
lignes depuis le jeu de résultats en tant que tableau de tableaux column - Récupère une colonne
depuis la ligne courante d'un jeu de résultats numFields - Retourne
le nombre de champs dans le jeu de résultats fieldName - Retourne le
nom d'un champ en particulier depuis le jeu de résultats current - Récupère la ligne
courante depuis le jeu de résultats en tant que tableau next - Déplace le pointeur
vers un numéro de ligne suivant valid - Retourne si oui ou non
il reste des lignes de disponibles
Le comportement de ces fonctions est
affecté par la configuration dans le fichier php.ini.
Tableau 1. Options de configuration SQLite | Nom | Par défaut | Modifiable | Historique |
|---|
| sqlite.assoc_case | "0" | PHP_INI_ALL | Disponible depuis PHP 5.0.0. |
Pour plus de détails sur les constantes PHP_INI_*,
reportez-vous à Annexe H.
Voici un éclaircissement sur
l'utilisation des directives de configuration.
- sqlite.assoc_case
int
Utilise des index à casse libre (0), majuscule
(1) ou minuscule (2).
Cette option sert principalement lorsque vous avez besoin de la compatibilité
avec d'autres systèmes de bases de données, où les noms des colonnes sont
toujours retournés en majuscule ou en minuscule, indépendamment de
la casse réelle de la colonne dans la base.
La bibliothèque SQLite retourne le nom de la
colonne sans y toucher
(c'est la casse qui sera utilisée dans votre base). Lorsque
sqlite.assoc_case vaut 0
cette casse sera conservée. Lorsque cette option vaut
1 ou 2, PHP va modifier la
casse des noms, et mettre le nom de la colonne respectivement en majuscules ou
minuscules.
Utiliser cette option implique une légère perte de performances,
mais c'est BEAUCOUP plus rapide que de faire la gestion des
caractères vous-même.
|