If you've followed the instructions and you can't even connect to the DB server, welcome to the Oracle hell. Most of the information you'll find is deprecated, incomplete, not for your platform, unnecessary or just plain wrong.
Typically, you won't need at all those complicate setups you'll read about and they'll probably make things harder. I suggest you get Systernal's "Filemon" utility (for Windows, in Unix you may do with strace) and find out what exact config files and DLLs are being tried by php.exe (or httpd.exe if PHP runs as Apache module or...). Pretty often, the issue is that (e.g.) TNSNAMES.ORA does not have the correct line ending or Apache is looking for a DLL that does not even exist in your hard disc; learning that prevents you to waste time adding more and more useless environmental variables.
Goog luck.
Fonctions OCI8
Sommaire
- oci_bind_array_by_name — Lie un tableau PHP à un tableau Oracle PL/SQL par son nom
- oci_bind_by_name — Associe une variable PHP à une variable SQL Oracle
- oci_cancel — Termine la lecture de ressources Oracle
- oci_close — Ferme une connexion Oracle
- OCI-Collection->append — Ajoute un élément à une collection Oracle
- OCI-Collection->assign — Assigne une valeur à une collection depuis une autre collection Oracle
- OCI-Collection->assignElem — Assigne une valeur à un élément d'une collection Oracle
- OCI-Collection->free — Libère les ressources associées avec un objet de collection
- OCI-Collection->getElem — Retourne la valeur d'un élément d'une collection Oracle
- OCI-Collection->max — Retourne le nombre maximal de valeurs d'une collection Oracle
- OCI-Collection->size — Retourne la taille d'une collection Oracle
- OCI-Collection->trim — Supprime les derniers éléments d'une collection Oracle
- oci_commit — Valide les transactions Oracle en cours
- oci_connect — Établit une connexion avec un serveur Oracle
- oci_define_by_name — Utilise une variable PHP pour la phase de définition, dans une commande SELECT Oracle
- oci_error — Retourne la dernière erreur Oracle
- oci_execute — Exécute une commande SQL Oracle
- oci_fetch_all — Lit toutes les lignes d'un résultat Oracle
- oci_fetch_array — Lit une ligne d'un résultat Oracle sous forme de tableau
- oci_fetch_assoc — Lit une ligne d'un résultat Oracle sous forme de tableau associatif
- oci_fetch_object — Lit une ligne d'un résultat Oracle sous forme d'objet
- oci_fetch_row — Lit une ligne d'un résultat Oracle sous forme de tableau numérique
- oci_fetch — Lit la prochaine ligne dans le résultat Oracle
- oci_field_is_null — Test si la valeur d'une colonne Oracle est NULL
- oci_field_name — Retourne le nom d'un champ Oracle
- oci_field_precision — Lit la précision d'un champ Oracle
- oci_field_scale — Lit l'échelle d'une colonne Oracle
- oci_field_size — Retourne la taille d'un champ Oracle
- oci_field_type_raw — Lit directement le type de colonne Oracle
- oci_field_type — Retourne le type de données d'un champ Oracle
- oci_free_statement — Libère toutes les ressources réservées par un résultat Oracle
- oci_internal_debug — Active ou désactive l'affichage des données de déboguage Oracle
- OCI-Lob->append — Ajoute des données à un LOB Oracle
- OCI-Lob->close — Ferme un LOB Oracle
- oci_lob_copy — Copie un LOB Oracle
- OCI-Lob->eof — Test la fin du LOB Oracle
- OCI-Lob->erase — Écrase une partie d'un LOB Oracle
- OCI-Lob->export — Exporte un LOB Oracle dans un fichier
- OCI-Lob->flush — Écrit les LOB Oracle sur le disque
- OCI-Lob->free — Détruit un pointeur de LOB Oracle
- OCI-Lob->getBuffering — Retourne l'état de bufferisation LOB d'Oracle
- OCI-Lob->import — Importe un fichier dans LOB Oracle
- oci_lob_is_equal — Compare deux LOB/FILE Oracle
- OCI-Lob->load — Retourne le contenu d'un LOB
- OCI-Lob->read — Lit une partie d'un LOB Oracle
- OCI-Lob->rewind — Ramène le pointeur interne d'un LOB Oracle au début
- OCI-Lob->save — Sauvegarde des données dans un LOB Oracle
- OCI-Lob->saveFile — Alias de oci_lob_import
- OCI-Lob->seek — Déplace le pointeur interne d'un LOB Oracle
- OCI-Lob->setBuffering — Active/désactive la bufferisation des LOB Oracle
- OCI-Lob->size — Retourne la taille d'un LOB Oracle
- OCI-Lob->tell — Retourne la position courante du pointeur de LOB
- OCI-Lob->truncate — Tronque un LOB Oracle
- OCI-Lob->write — Écrit des données dans un LOB Oracle
- OCI-Lob->writeTemporary — Écrit un LOB Oracle temporaire
- OCI-Lob->writeToFile — Alias de oci_lob_export
- oci_new_collection — Initialise une nouvelle collection Oracle
- oci_new_connect — Établit une nouvelle connexion au serveur Oracle
- oci_new_cursor — Alloue un nouveau curseur Oracle
- oci_new_descriptor — Initialise un nouveau pointeur vide de LOB/FILE Oracle
- oci_num_fields — Retourne le nombre de colonnes dans un résultat Oracle
- oci_num_rows — Retourne le nombre de lignes affectées durant la dernière commande Oracle
- oci_parse — Prépare une requête SQL avec Oracle
- oci_password_change — Modifie le mot de passe d'un utilisateur Oracle
- oci_pconnect — Ouvre une connexion persistante à un serveur Oracle
- oci_result — Retourne la valeur d'une colonne dans un résultat Oracle
- oci_rollback — Annule les transactions Oracle en cours
- oci_server_version — Retourne une chaîne contenant les informations de version du serveur Oracle
- oci_set_prefetch — Indique le nombre de lignes qui doivent être lues à l'avance par Oracle
- oci_statement_type — Retourne le type de la requête Oracle
- ocibindbyname — Alias de oci_bind_by_name
- ocicancel — Alias de oci_cancel
- ocicloselob — Alias de
- ocicollappend — Alias de
- ocicollassign — Alias de
- ocicollassignelem — Alias de
- ocicollgetelem — Alias de
- ocicollmax — Alias de
- ocicollsize — Alias de
- ocicolltrim — Alias de
- ocicolumnisnull — Alias de oci_field_is_null
- ocicolumnname — Alias de oci_field_name
- ocicolumnprecision — Alias de oci_field_precision
- ocicolumnscale — Alias de oci_field_scale
- ocicolumnsize — Alias de oci_field_size
- ocicolumntype — Alias de oci_field_type
- ocicolumntyperaw — Alias de oci_field_type_raw
- ocicommit — Alias de oci_commit
- ocidefinebyname — Alias de oci_define_by_name
- ocierror — Alias de oci_error
- ociexecute — Alias de oci_execute
- ocifetch — Alias de oci_fetch
- ocifetchinto — Récupère la prochaine ligne dans un tableau (obsolète)
- ocifetchstatement — Alias de oci_fetch_all
- ocifreecollection — Alias de
- ocifreecursor — Alias de oci_free_statement
- ocifreedesc — Alias de
- ocifreestatement — Alias de oci_free_statement
- ociinternaldebug — Alias de oci_internal_debug
- ociloadlob — Alias de
- ocilogoff — Alias de oci_close
- ocilogon — Alias de oci_connect
- ocinewcollection — Alias de oci_new_collection
- ocinewcursor — Alias de oci_new_cursor
- ocinewdescriptor — Alias de oci_new_descriptor
- ocinlogon — Alias de oci_new_connect
- ocinumcols — Alias de oci_num_fields
- ociparse — Alias de oci_parse
- ociplogon — Alias de oci_pconnect
- ociresult — Alias de oci_result
- ocirollback — Alias de oci_rollback
- ocirowcount — Alias de oci_num_rows
- ocisavelob — Alias de
- ocisavelobfile — Alias de
- ociserverversion — Alias de oci_server_version
- ocisetprefetch — Alias de oci_set_prefetch
- ocistatementtype — Alias de oci_statement_type
- ociwritelobtofile — Alias de
- ociwritetemporarylob — Alias de
Fonctions OCI8
alvaro at demogracia dot com
10-Jun-2008 04:24
10-Jun-2008 04:24
christopher dot jones at oracle dot com
17-Jun-2007 09:25
17-Jun-2007 09:25
There are several good books on PHP and Oracle available - search your favorite bookstore. There is also a free book from Oracle "The Underground PHP and Oracle Manual" that covers the OCI8 extension: http://otn.oracle.com/tech/php/pdf/underground-php-oracle-manual.pdf
(free registration for OTN required, IIRC). Disclaimer: I'm one of its authors.
James VL
28-Feb-2007 10:49
28-Feb-2007 10:49
re: Andrei Kubar
I was using Oracle Instant Client on Windows XP, and was getting the
PHP Startup: Unable to load dynamic library 'C:\php\ext\php_oci8.dll' - The specified module could not be found.
error at startup, even though I had done all (most?) of the PHP and Oracle setup routines.
For me it wasn't the lack of mfc*.dll files, but a simple PATH issue: in addition to defining the environment variable TNS_ADMIN, I had to include my instant client directory in my PATH.
darkstar_ae at hotmail dot com
25-Apr-2005 10:39
25-Apr-2005 10:39
When fetching associative arrays, use uppercase string indices. It appears the PHP OCI Library is less lenient with the field names returned by Oracle.
e.g.
echo $row['field1']; // This won't return anything.
as opposed to:
echo $row['FIELD1'];
edahnke at consultant dot com
08-Jan-2002 12:01
08-Jan-2002 12:01
Here's a little snipet that shows how to insert multiple clob fields. Worked for me.
$dbh = OCILogon($dst_user_name, $dst_password, $dst_db_name);
for($i = 0; $i < $src_rec_cnt; $i++) {
$query = "insert into bid (id,time,resume,experience,comments) values ('$id[$i]','$time[$i]',empty_clob(),empty_clob(),empty_clob()) returning resume,experience,comments into :resume,:experience,:comments";
$stmt = OCIParse($dbh, $query);
$clob1 = OCINewDescriptor($dbh, OCI_D_LOB);
$clob2 = OCINewDescriptor($dbh, OCI_D_LOB);
$clob3 = OCINewDescriptor($dbh, OCI_D_LOB);
OCIBindByName ($stmt, ":resume", &$clob1, -1, OCI_B_CLOB);
OCIBindByName ($stmt, ":experience", &$clob2, -1, OCI_B_CLOB);
OCIBindByName ($stmt, ":comments", &$clob3, -1, OCI_B_CLOB);
OCIExecute($stmt, OCI_DEFAULT);
@$clob1->save ($resume[$i]);
@$clob2->save ($experience[$i]);
@$clob3->save ($comments[$i]);
OCICommit($dbh);
doug at redhive dot com
19-Jul-2001 02:38
19-Jul-2001 02:38
if you feel like you have too many oracle statements clouding up your php, i came up with a function to open a connection (if necessary), parse your sql statement, and return the executed query. after you call the function, you can do whatever needs to be done. makes like so much simpler: (do whatever you want with the errors)
function execute_query($query, &$connected) {
global $ORACLE_USER, $ORACLE_PASS, $ORACLE_SID;
if(!$connected) {
$connected = @OCIPLogon($ORACLE_USER, $ORACLE_PASS, $ORACLE_SID);
if($error = OCIError()) {
die("<font color=red>ERROR!! Couldn't connect to server!</font>");
}
}
$stmt = @OCIParse($connected, $query);
if($error = OCIError($cn)) {
die("<font color=red>ERROR!! Statement syntax error!</font>");
}
@OCIExecute($stmt);
if($error = OCIError($stmt)) {
die("<font color=red>ERROR!! Could not execute statement!</font>");
}
return $stmt;
}
jasendorf at lcounty dot com
23-May-2001 03:48
23-May-2001 03:48
VERY IMPORTANT! OCIPLogon only keeps a persistent connection if you are running PHP as a module. This is particularly important to Windows users who are used to running PHP as a CGI.
junk at netburp dot com
19-Oct-2000 02:39
19-Oct-2000 02:39
Here's a clue about rowid.
Don't forget about the oracle functions:
"rowidtochar" and "chartorowid"
"select rowidtochar(rowid) as FOO from table ...."
When you want to pass the rowid in a form or link, that's
the only way to go.
