|
|
LXXV. Oracle 8
Ces fonctions vous permettront d'accéder aux serveurs Oracle8 et
Oracle7. Elles utilisent l'interface Oracle8 Call-Interface (oci8).
Vous aurez donc besoin des librairies clientes Oracle8 pour pouvoir
les utiliser.
Il faut noter que cette extension est plus souple que
l'ancienne extension Oracle.
Elle supporte notamment les liaisons entre les variables
globales et locales de PHP avec des emplacements Oracle; elle supporte
complètement les types LOB, FILE et ROWID et vous permet
d'utiliser des variables de définitions personnalisables.
Il est recommandé d'utiliser cette fonction plutôt que
l'ancienne extension Oracle.
Vous avez besoin des bibliothèques Oracles pour utiliser cette extension.
Les utilisateur Windows doivent avoir Oracle version 8.1, et utiliser
la bibliothèque php_oci8.dll.
Avant d'utiliser cette extension, assurez-vous que vous avez bien
paramétré vos variables d'environnement Oracle, ainsi que votre
démon utilisateur. Les variables dont vous pouvez avoir besoin sont :
ORACLE_HOME
ORACLE_SID
LD_PRELOAD
LD_LIBRARY_PATH
NLS_LANG
ORA_NLS33
Après avoir configuré ces variables pour votre utilisateur "serveur
web", assurez-vous aussi d'ajouter cet utilisateur (nobody, www)
au group Oracle.
Si votre serveur web ne démarre pas, ou crashe au démarrage :
Vérifiez que Apache a bien été compilé
avec la librairie pthread :
Exemple 1. Configuration Apache avec pthread # ldd /www/apache/bin/httpd
libpthread.so.0 => /lib/libpthread.so.0 (0x4001c000)
libm.so.6 => /lib/libm.so.6 (0x4002f000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x4004c000)
libdl.so.2 => /lib/libdl.so.2 (0x4007a000)
libc.so.6 => /lib/libc.so.6 (0x4007e000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) |
|
Si la libpthread n'est pas listée, vous devez réinstaller Apache :
Exemple 2. Reinstaller Apache avec pthread # cd /usr/src/apache_1.3.xx
# make clean
# LIBS=-lpthread ./config.status
# make
# make install |
|
Notez bien que sur certains systèmes comme UnixWare il faut utiliser
libthread au lieu de libpthread. PHP et Apache doivent alors être configurés
avec EXTRA_LIBS=-lthread.
Vous devez compiler PHP avec l'option
--with-oci8[=DIR], où DIR vaut
par défaut la variable d'environnement ORACLE_HOME.
Cette extension ne définit aucune directive de
configuration. 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.
Exemple 3. Exemple avec OCI8
<?php // par sergo@bacup.ru
// Utilisez l'option: OCI_DEFAULT pour exécuter la commande avec exécution // retardée. OCIExecute($stmt, OCI_DEFAULT);
// pour lire les données, après un fetch :
$result = OCIResult($stmt, $n); if (is_object ($result)) $result = $result->load();
// Pour les commandes INSERT et UPDATE utilisez :
$sql = "insert into table (field1, field2) values (field1 = 'value', field2 = empty_clob()) returning field2 into :field2"; OCIParse($conn, $sql); $clob = OCINewDescriptor($conn, OCI_D_LOB); OCIBindByName ($stmt, ":field2", &$clob, -1, OCI_B_CLOB); OCIExecute($stmt, OCI_DEFAULT); $clob->save ("some text"); OCICommit($conn);
?>
|
|
Vous pouvez facilement accéder aux procédures stockées, de la même
façon que vous le feriez par ligne de commande :
Exemple 4. Utilisation de procédures stockées
<?php // par webmaster@remoterealty.com $sth = OCIParse ( $dbh, "begin sp_newaddress( :address_id, '$firstname', '$lastname', '$company', '$address1', '$address2', '$city', '$state', '$postalcode', '$country', :error_code );end;" );
// Cela appelle la procédure stockée sp_newaddress, avec la variable :address_id // pour les entrées/sorties et :error_code comme variable de sortie. // Ensuite, vous faites les liaisons suivantes :
OCIBindByName ( $sth, ":address_id", $addr_id, 10 ); OCIBindByName ( $sth, ":error_code", $errorcode, 10 ); OCIExecute ( $sth );
?>
|
|
|