CXXXVII. Fonctions SQLite

Introduction

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.

Note : Pour plus d'informations sur SQLite, voyez le site web http://sqlite.org/.

Installation

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 :

SetEnv TMP c:/temp

Si vous êtes incapable d'établir cette configuration à ce niveau du serveur, vous pouvez implémenter cette configuration dans votre script :

putenv('TMP=C:/temp');

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

Pré-requis

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.

Types de ressources

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.

Constantes pré-définies

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.

Classes pré-définies

SQLiteDatabase

Représente une base de données SQLite ouverte.

Constructeur

Méthodes

  • 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

SQLiteResult

Représente un jeu de résultats SQLite bufférisé.

Méthodes

  • 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

SQLiteUnbuffered

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.

Méthodes

  • 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

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. Options de configuration SQLite

NomPar défautModifiableHistorique
sqlite.assoc_case"0"PHP_INI_ALLDisponible 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.

Table des matières
sqlite_array_query --  Exécute une requête SQL avec SQLite et retourne un tableau
sqlite_busy_timeout -- Configure le délai d'attente d'une base SQLite occupée
sqlite_changes --  Retourne le nombre de lignes qui ont été modifiées par la dernière requête SQLite
sqlite_close -- Ferme la connexion à SQLite
sqlite_column -- Lit la valeur d'une colonne dans un résultat SQLite
sqlite_create_aggregate -- Enregistre une UDF agregeante pour les requêtes SQLite
sqlite_create_function --  Enregistre une fonction utilisateur "classique" UDF pour SQLite
sqlite_current -- Lit une ligne de résultat SQLite dans un tableau
sqlite_error_string -- Retourne le message d'erreur SQLite
sqlite_escape_string -- Protège une chaîne de caractères pour utilisation avec SQLite
sqlite_exec --  Exécute une requête sans résultats sur une base de données
sqlite_factory --  Ouvre une base SQLite et crée un objet pour elle
sqlite_fetch_all --  Retourne toutes les lignes d'un jeu de résultats en tant que tableau de tableaux
sqlite_fetch_array -- Lit la prochaine ligne de résultat SQLite dans un tableau
sqlite_fetch_column_types --  Retourne un tableau des types de colonnes d'une certaine table
sqlite_fetch_object --  Retourne la ligne suivante du jeu de résultats en tant qu'objet
sqlite_fetch_single -- Lit la première ligne d'un résultat SQLite sous forme de chaîne
sqlite_fetch_string -- Alias de sqlite_fetch_single()
sqlite_field_name -- Retourne le nom du champ SQLite
sqlite_has_more -- Indique s'il reste des lignes SQLite à lire
sqlite_has_prev -- Retourne si oui ou non une ligne précédente est disponible
sqlite_key -- Retourne l'index de la ligne courante
sqlite_last_error -- Retourne le dernier code d'erreur SQLite
sqlite_last_insert_rowid -- Retourne le numéro de ligne de la dernière ligne insérée
sqlite_libencoding -- Retourne l'encodage utilisé par la bibliothèque SQLite
sqlite_libversion -- Retourne la version de la bibliothèque SQLite
sqlite_next -- Déplace le pointeur SQLite vers la prochaine ligne
sqlite_num_fields -- Retourne le nombre de champs dans un résultat SQLite
sqlite_num_rows -- Retourne le nombre de lignes d'un résultat SQLite
sqlite_open -- Ouvre une base SQLite et la crée si elle n'existe pas
sqlite_popen --  Ouvre une connexion SQlite persistante et crée la base si elle n'existe pas
sqlite_prev -- Se positionne sur le numéro de ligne précédent du jeu de résultats
sqlite_query -- Exécute une requête SQLite et lit le résultat
sqlite_rewind -- Place le pointeur de résultat SQLite au début
sqlite_seek -- Déplace le pointeur de résultat SQLite vers une ligne
sqlite_single_query --  Exécute une requête et retourne soit un tableau pour une colonne unique, soit la valeur de la première ligne
sqlite_udf_decode_binary -- Décode des données binaires, passées à une UDF SQLite
sqlite_udf_encode_binary -- Encode les données binaires d'une UDF SQLite avant de les retourner
sqlite_unbuffered_query -- Exécute une requête SQLite non bufférisée
sqlite_valid -- Retourne si oui ou non il reste des lignes disponibles

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:02:21