XXXVI. Fonctions Firebird/InterBase
Firebird/InterBase est une base de données relationnelles offrant la plus part des fonctionnalités
décrites dans la norme ANSI SQL-92, qui fonctionne sous environnements Linux, Windows,
et la plus part des systèmes Unix. Firebird/InterBase offre une excellente simultanéité, de
hautes performances et un langage efficace pour l'écriture des procédures stockées et
des triggers. Il est utilisé sur des systèmes de production depuis 1981.
Interbase est le nom de la variante commerciale de cette base de données
créée par Borland/Inprise. Pour plus d'informations sur Interbase, allez à
http://www.borland.com/interbase/.
Firebird est un projet commerciallement indépendant de programmeurs C et C++,
conseillés techniques, supportant le développement et assurant la
compatibilité multi-plate-forme de la base de données relationnelle basé sur le
code source offert par Inprise Corp (maintenant connu sous le nom de Borland Software Corp)
sous la license InterBase Public License v.1.0 le 25 Juillet 2000. Pour plus d'informations sur
Firebird, allez à http://www.firebirdsql.org/.
Note :
Cette extension supporte Interbase version 5 et suivante ainsi que toutes les versions de Firbird.
Le support d'Interbase version 5.x sera supprimé dans PHP 5.
Cette base de données utilise les guillemets simples (')
pour échapper les caractères, un peu comme le fait Sybase.
Ajoutez à votre fichier php.ini la directive suivante :
Exemple 1. Configuration InterBase |
Pour activer le support de ibase, vous devez compiler PHP avec l'option
--with-interbase[=DIR].
Note aux utilisateurs Win32 :
Afin d'activer ce module dans l'environnement Windows, vous
devez copier les bibliothèques gds32.dll depuis le dossier DLL
de PHP/Win32 dans le dossier système
SYSTEM32 de votre machine (par exemple :
C:\WINNT\SYSTEM32 ou C:\WINDOWS\SYSTEM32).
Dans le cas où vous auriez installé le serveur
de base de données InterBase sur la
même machine qui exploite PHP, vous aurez déjà
ces DLL de prêtes. Par conséquent,
vous n'avez pas à copier la bibliothèque gds32.dll.
Le comportement de ces fonctions est
affecté par la configuration dans le fichier php.ini.
Tableau 1. Options de configuration | Nom | Par défaut | Modifiable | Historique |
|---|
| ibase.allow_persistent | "1" | PHP_INI_SYSTEM | | | ibase.max_persistent | "-1" | PHP_INI_SYSTEM | | | ibase.max_links | "-1" | PHP_INI_SYSTEM | | | ibase.default_db | NULL | PHP_INI_SYSTEM | Disponible depuis PHP 5.0.0. | | ibase.default_user | NULL | PHP_INI_ALL | | | ibase.default_password | NULL | PHP_INI_ALL | | | ibase.default_charset | NULL | PHP_INI_ALL | Disponible depuis PHP 5.0.0. | | ibase.timestampformat | "%Y-%m-%d %H:%M:%S" | PHP_INI_ALL | | | ibase.dateformat | "%Y-%m-%d" | PHP_INI_ALL | | | ibase.timeformat | "%H:%M:%S" | PHP_INI_ALL | |
Pour plus de détails sur les constantes PHP_INI_*,
reportez-vous à Annexe H.
Voici un éclaircissement sur
l'utilisation des directives de configuration.
- ibase.allow_persistent
booléen
Accepte ou non les
connexions persistantes
à Firebird/Interbase.
- ibase.max_persistent
entier
Le nombre maximal de connexions persistantes Firebird/Interbase par processus.
Les nouvelles connexions avec ibase_pconnect() ne seront pas persistantes
si ce nombre maximal est atteint.
- ibase.max_links
entier
Le nombre maximal de connexions Firebird/Interbase par processus, incluant les
connexions persistantes.
- ibase.default_db
chaîne de caractères
Le nom de la base de données par défaut lorsque ibase_[p]connect() est appelé
sans base de données spécifique. Si cette valeur est définie et que le
mode sécurisé (safe mode) SQL est activé, aucune connexion à d'autres bases de données
que celle-ci ne sera autorisé.
- ibase.default_user
chaîne de caractères
Le nom d'utilisateur utilisé lors de la connexion à la base de données lorsqu'aucun n'est spécifié.
- ibase.default_password
chaîne de caractères
Le mot de passe utilisé lors de la connexion à la base de données lorsqu'aucun n'est spécifié.
- ibase.default_charset
chaîne de caractères
Le jeux de caractères utilisé lors de la connexion à la base de données lorsqu'aucun
n'est spécifié.
- ibase.timestampformat
chaîne de caractères
- ibase.dateformat
chaîne de caractères
- ibase.timeformat
chaîne de caractères
Ces directives sont utilisées pour définir les formats de dates et d'heures qui seront
utilisés lorsque des dates/heures seront retournées d'un jeux de résultat, ou lors
de traitement d'arguments en paramètres dates/heures.
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 constantes suivantes peuvent être passées à la fonction
ibase_trans() pour spécifier le comportement du traitement.
Tableau 2. Constantes Firebird/InterBase | Constante | Description |
|---|
| IBASE_DEFAULT |
Définit le comportement par défaut. Ce comportement est déterminé par la bibliothèque cliente,
qui est définie comme IBASE_WRITE|IBASE_CONCURRENCY|IBASE_WAIT dans
la plus part des cas.
| | IBASE_READ | Démarre une transaction en lecture seul | | IBASE_WRITE | Démarre une transaction en lecture / écriture | | IBASE_CONSISTENCY |
Démarre une transaction avec le niveau d'isolation définie à
'consistency', ce qui signifie que le transaction courante
ne peut lire depuis des tables qui ont été modifiées par d'autres transactions.
| | IBASE_CONCURRENCY |
Démarre une transaction avec le niveau d'isolation définie à
'concurrency' (ou 'snapshot'), ce qui signifie
que la transaction peut accéder à toutes les tables, mais ne peut pas voir les
modifications apportées par d'autres transactions une fois que la transaction
a débutté.
| | IBASE_COMMITTED |
Démarre une transaction avec le niveau d'isolation définie à
'read committed'. Ce flag doit être associé avec
soit la constante IBASE_REC_VERSION, soit
la constante IBASE_REC_NO_VERSION.
Ce niveau d'isolation vous permet d'accéder aux modifications effectuées
après le début de la transaction. Si la constante
IBASE_REC_NO_VERSION est spécifiée,
seulement la dernière version des lignes pourra être lue.
Si la constante IBASE_REC_VERSION est spécifiée,
une ligne peut toujours être lue lorsqu'une modification est en attente dans
une transaction concurrente.
| | IBASE_WAIT |
Indique que la transaction peut attendre, puis réessayer lorsqu'un conflit apparaît.
| | IBASE_NOWAIT |
Indique que la transaction échouera immédiatement lorsqu'un conflit apparaît.
|
Les constantes suivantes peuvent être passées aux fonctions
ibase_fetch_row(),
ibase_fetch_assoc() ou ibase_fetch_object()
pour spécifier leurs comportements.
Tableau 3. Constantes Firebird/InterBase | Constante | Description |
|---|
| IBASE_FETCH_BLOBS |
Aussi disponible sous le nom IBASE_TEXT pour des raisons de
compatiblité ascendante.
Permet de lire le contenu d'un BLOB 'inline' au lieu de le parcourrir en utilisant un identifiant
de BLOB.
| | IBASE_FETCH_ARRAYS |
Permet de lire un tableau 'inline'. Sinon, les identifiants de tableaux sont retournés.
Les identifiants de tableaux ne peuvent être passés uniquement comme arguments
aux requêtes INSERT, car aucune fonction pour traiter les identifiants de tableaux
n'est actuellement disponible.
| | IBASE_UNIXTIME |
Permet de retourner les champs date et heure non pas comme des chaînes de caractères
mais comme des timestamps UNIX (le nombre de secondes depuis l'époque UNIX, qui
est le 1-Jan-1970 0:00 UTC). Cela peut être problèmatique si vous utilisez des dates
antérieures à 1970 sur quelques systèmes.
|
Les constantes suivantes sont utilisées pour passer des requêtes et des options à
l'API (ibase_server_info(), ibase_db_info(), ibase_backup(), ibase_restore() et ibase_maintain_db()).
Merci de consulter le manuel Firebird/InterBase pour plus d'informations
sur la significations de ces options.
- IBASE_BKP_IGNORE_CHECKSUMS
- IBASE_BKP_IGNORE_LIMBO
- IBASE_BKP_METADATA_ONLY
- IBASE_BKP_NO_GARBAGE_COLLECT
- IBASE_BKP_OLD_DESCRIPTIONS
- IBASE_BKP_NON_TRANSPORTABLE
- IBASE_BKP_CONVERT
Options de ibase_backup()
- IBASE_RES_DEACTIVATE_IDX
- IBASE_RES_NO_SHADOW
- IBASE_RES_NO_VALIDITY
- IBASE_RES_ONE_AT_A_TIME
- IBASE_RES_REPLACE
- IBASE_RES_CREATE
- IBASE_RES_USE_ALL_SPACE
Options de ibase_restore()
- IBASE_PRP_PAGE_BUFFERS
- IBASE_PRP_SWEEP_INTERVAL
- IBASE_PRP_SHUTDOWN_DB
- IBASE_PRP_DENY_NEW_TRANSACTIONS
- IBASE_PRP_DENY_NEW_ATTACHMENTS
- IBASE_PRP_RESERVE_SPACE
- IBASE_PRP_RES_USE_FULL
- IBASE_PRP_RES
- IBASE_PRP_WRITE_MODE
- IBASE_PRP_WM_ASYNC
- IBASE_PRP_WM_SYNC
- IBASE_PRP_ACCESS_MODE
- IBASE_PRP_AM_READONLY
- IBASE_PRP_AM_READWRITE
- IBASE_PRP_SET_SQL_DIALECT
- IBASE_PRP_ACTIVATE
- IBASE_PRP_DB_ONLINE
- IBASE_RPR_CHECK_DB
- IBASE_RPR_IGNORE_CHECKSUM
- IBASE_RPR_KILL_SHADOWS
- IBASE_RPR_MEND_DB
- IBASE_RPR_VALIDATE_DB
- IBASE_RPR_FULL
- IBASE_RPR_SWEEP_DB
Options de ibase_maintain_db()
- IBASE_STS_DATA_PAGES
- IBASE_STS_DB_LOG
- IBASE_STS_HDR_PAGES
- IBASE_STS_IDX_PAGES
- IBASE_STS_SYS_RELATIONS
Options de ibase_db_info()
- IBASE_SVC_SERVER_VERSION
- IBASE_SVC_IMPLEMENTATION
- IBASE_SVC_GET_ENV
- IBASE_SVC_GET_ENV_LOCK
- IBASE_SVC_GET_ENV_MSG
- IBASE_SVC_USER_DBPATH
- IBASE_SVC_SVR_DB_INFO
- IBASE_SVC_GET_USERS
Options de ibase_server_info()
|