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.
Oracle OCI8 Funzioni
Indice dei contenuti
- oci_bind_array_by_name — Binds PHP array to Oracle PL/SQL array by name
- oci_bind_by_name — Lega una variabile PHP ad un segnaposto Oracle
- oci_cancel — Interrompe la lettura del cursore
- oci_close — Closes Oracle connection
- OCI-Collection->append — Appends element to the collection
- OCI-Collection->assign — Assigns a value to the collection from another existing collection
- OCI-Collection->assignElem — Assigns a value to the element of the collection
- OCI-Collection->free — Frees the resources associated with the collection object
- OCI-Collection->getElem — Returns value of the element
- OCI-Collection->max — Returns the maximum number of elements in the collection
- OCI-Collection->size — Returns size of the collection
- OCI-Collection->trim — Trims elements from the end of the collection
- oci_commit — Commits outstanding statements
- oci_connect — Establishes a connection to the Oracle server
- oci_define_by_name — Uses a PHP variable for the define-step during a SELECT
- oci_error — Returns the last error found
- oci_execute — Executes a statement
- oci_fetch_all — Fetches all rows of result data into an array
- oci_fetch_array — Returns the next row from the result data as an associative or numeric array, or both
- oci_fetch_assoc — Returns the next row from the result data as an associative array
- oci_fetch_object — Returns the next row from the result data as an object
- oci_fetch_row — Returns the next row from the result data as a numeric array
- oci_fetch — Fetches the next row into result-buffer
- oci_field_is_null — Checks if the field is NULL
- oci_field_name — Returns the name of a field from the statement
- oci_field_precision — Tell the precision of a field
- oci_field_scale — Tell the scale of the field
- oci_field_size — Returns field's size
- oci_field_type_raw — Tell the raw Oracle data type of the field
- oci_field_type — Returns field's data type
- oci_free_statement — Frees all resources associated with statement or cursor
- oci_internal_debug — Enables or disables internal debug output
- OCI-Lob->append — Appends data from the large object to another large object
- OCI-Lob->close — Closes LOB descriptor
- oci_lob_copy — Copies large object
- OCI-Lob->eof — Tests for end-of-file on a large object's descriptor
- OCI-Lob->erase — Erases a specified portion of the internal LOB data
- OCI-Lob->export — Exports LOB's contents to a file
- OCI-Lob->flush — Flushes/writes buffer of the LOB to the server
- OCI-Lob->free — Frees resources associated with the LOB descriptor
- OCI-Lob->getBuffering — Returns current state of buffering for the large object
- OCI-Lob->import — Imports file data to the LOB
- oci_lob_is_equal — Compares two LOB/FILE locators for equality
- OCI-Lob->load — Returns large object's contents
- OCI-Lob->read — Reads part of the large object
- OCI-Lob->rewind — Moves the internal pointer to the beginning of the large object
- OCI-Lob->save — Saves data to the large object
- OCI-Lob->saveFile — Alias di oci_lob_import
- OCI-Lob->seek — Sets the internal pointer of the large object
- OCI-Lob->setBuffering — Changes current state of buffering for the large object
- OCI-Lob->size — Returns size of large object
- OCI-Lob->tell — Returns current position of internal pointer of large object
- OCI-Lob->truncate — Truncates large object
- OCI-Lob->write — Writes data to the large object
- OCI-Lob->writeTemporary — Writes temporary large object
- OCI-Lob->writeToFile — Alias di oci_lob_export
- oci_new_collection — Allocates new collection object
- oci_new_connect — Establishes a new connection to the Oracle server
- oci_new_cursor — Allocates and returns a new cursor (statement handle)
- oci_new_descriptor — Initializes a new empty LOB or FILE descriptor
- oci_num_fields — Returns the number of result columns in a statement
- oci_num_rows — Returns number of rows affected during statement execution
- oci_parse — Prepares Oracle statement for execution
- oci_password_change — Changes password of Oracle's user
- oci_pconnect — Connect to an Oracle database using a persistent connection
- oci_result — Returns field's value from the fetched row
- oci_rollback — Rolls back outstanding transaction
- oci_server_version — Returns server version
- oci_set_prefetch — Sets number of rows to be prefetched
- oci_statement_type — Returns the type of an OCI statement
- ocibindbyname — Alias di oci_bind_by_name
- ocicancel — Interrompe la lettura del cursore
- ocicloselob — Alias di
- ocicollappend — Aggiunge un oggetto alla collezione
- ocicollassign — Assegna una collezione da un'altra collezione esistente
- ocicollassignelem — Assegna un elemento alla collezione in una specifica posizione
- ocicollgetelem — Coming soon
- ocicollmax — Coming soon
- ocicollsize — Coming soon
- ocicolltrim — Coming soon
- ocicolumnisnull — Verifica se un campo di risultato è NULL
- ocicolumnname — Restituisce il nome di un campo
- ocicolumnprecision — Coming soon
- ocicolumnscale — Coming soon
- ocicolumnsize — Restituisce la dimensione del campo
- ocicolumntype — Restituisce il tipo di dati di un campo
- ocicolumntyperaw — Coming soon
- OCICommit — Esegue le transazioni in sospeso
- OCIDefineByName — Utilizza una variabile PHP per la fase di definizione in un comando SELECT
- OCIError — Restituisce l'ultimo errore di stmt|conn|global
- ociexecute — Esegue un comando SQL
- ocifetch — Estrae la prossima tupla opnendola nel buffer di risultato.
- ocifetchinto — Estrae la prossima tupla ponendola in un array
- ocifetchstatement — Estrae tutte le tuple in un array
- ocifreecollection — Coming soon
- ocifreecursor — Libera tutte le risorse associate ad un cursore
- ocifreedesc — Cancella un descrittore di oggetto binario (LOB)
- ocifreestatement — Libera tutte le risorse associate ad un'istruzione
- ociinternaldebug — Abilita o disabilita la visualizzazione del debug interno.
- ociloadlob — Coming soon
- ocilogoff — Disconnette da Oracle
- ocilogon — Stabilisce una connessione a Oracle
- ocinewcollection — Coming soon
- ocinewcursor — Restituisce un nuovo cursore (Statement-Handle)
- ocinewdescriptor — Inizializza un nuovo descrittore LOB/FILE vuoto
- ocinlogon — Stabilisce, una nuova connessione a Oracle.
- ocinumcols — Restituisce il numero di campi che risultano da un comando SQL
- ociparse — Analizza una query e restituisce un'istruzione.
- ociplogon — Stabilisce una connessione permanente a Oracle.
- ociresult — Restituisce il valore di campo della tupla estratta
- ocirollback — Annulla le transazioni in sospeso
- ocirowcount — Restituisce il numero di tuple modificate
- ocisavelob — Coming soon
- ocisavelobfile — Coming soon
- ociserverversion — Restituisce una stringa contenente informazioni sulla versione del server
- ocisetprefetch — Imposta il numero di tuple da precaricare
- ocistatementtype — Restituisce il tipo di un'istruzione OCI
- ociwritelobtofile — Coming soon
- ociwritetemporarylob — Alias di
OCI8
christopher dot jones at oracle dot com
17-Jun-2007 06:25
17-Jun-2007 06:25
James VL
28-Feb-2007 07:49
28-Feb-2007 07: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
26-Apr-2005 07:39
26-Apr-2005 07: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 09:01
08-Jan-2002 09: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 11:38
19-Jul-2001 11: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
24-May-2001 12:48
24-May-2001 12: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 11:39
19-Oct-2000 11: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.
