[ Pobierz całość w formacie PDF ]
.The variables you might need to setare as follows:" ORACLE_HOME" ORACLE_SID" LD_PRELOAD" LD_LIBRARY_PATH" NLS_LANG" ORA_NLS33After setting up the environment variables for your webserver user, be sure to also add the webserveruser (nobody, www) to the oracle group.If your webserver doesn t start or crashes at startup: Check that Apache is linked with thepthread library:# ldd /www/apache/bin/httpdlibpthread.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)If the libpthread is not listed you have to reinstall Apache:# cd /usr/src/apache_1.3.xx1193OCI8# make clean# LIBS=-lpthread./config.status# make# make installPlease note that on some systems like UnixWare it is libthread instead of libpthread.PHP andApache have to be configured with EXTRA_LIBS=-lthread.InstalacjaYou have to compile PHP with the option--with-oci8[=DIR], where DIR defaults to yourenvironmment variable ORACLE_HOME.Konfiguracja startowaTo rozszerzenie nie definiuje żadnych dyrektyw konfiguracyjnych.Typy zasobówPredefiniowane stałePoniższe stałe są zdefiniowane w tym rozszerzeniu i stają się dostępne, gdy rozszerzenie jest1194OCI8dokompilowane do PHP, lub załadowane dynamicznie przy starcie.OCI_DEFAULT(integer)OCI_DESCRIBE_ONLY(integer)OCI_COMMIT_ON_SUCCESS(integer)OCI_EXACT_FETCH(integer)SQLT_BFILEE(integer)SQLT_CFILEE(integer)SQLT_CLOB(integer)SQLT_BLOB(integer)SQLT_RDD(integer)OCI_B_SQLT_NTY(integer)OCI_SYSDATE(integer)OCI_B_BFILE(integer)OCI_B_CFILEE(integer)OCI_B_CLOB(integer)OCI_B_BLOB(integer)OCI_B_ROWID(integer)OCI_B_CURSOR(integer)1195OCI_B_BIN(integer)OCI_FETCHSTATEMENT_BY_COLUMN(integer)OCI8load();// For INSERT or UPDATE statement use:$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);?>You can easily access stored procedures in the same way as you would from the commands line.Przykład 2.Using Stored Procedures1196OCI8OCIBindByName (PHP 3>= 3.4, PHP 4 )Bind a PHP variable to an Oracle Placeholderint OCIBindByName ( int stmt, string ph_name, mixed & variable, int length [, int type]) \linebreakOCIBindByName() binds the PHP variablevariableto the Oracle placeholderph_name.Whether it will be used for input or output will be determined run-time, and the necessary storagespace will be allocated.Thelengthparameter sets the maximum length for the bind.If you setlengthto -1 OCIBindByName() will use the current length ofvariableto set the maximumlength.If you need to bind an abstract Datatype (LOB/ROWID/BFILE) you need to allocate it first usingOCINewDescriptor() function.Thelengthis not used for abstract Datatypes and should be set to-1.Thetypevariable tells oracle, what kind of descriptor we want to use.Possible values are:OCI_B_FILE (Binary-File), OCI_B_CFILE (Character-File), OCI_B_CLOB (Character-LOB),OCI_B_BLOB (Binary-LOB) and OCI_B_ROWID (ROWID).Przykład 1.OCIDefineByName"Larry", 2222 => "Bill", 3333 => "Jim");$rowid = OCINewDescriptor($conn,OCI_D_ROWID);OCIBindByName($stmt,":empno",&$empno,32);OCIBindByName($stmt,":ename",&$ename,32);OCIBindByName($stmt,":rid",&$rowid,-1,OCI_B_ROWID);$update = OCIParse($conn,"update emp set sal = :sal where ROWID = :rid");OCIBindByName($update,":rid",&$rowid,-1,OCI_B_ROWID);OCIBindByName($update,":sal",&$sal,32);$sal = 10000;while (list($empno,$ename) = each($data)) {OCIExecute($stmt);OCIExecute($update);}$rowid->free();OCIFreeStatement($update);OCIFreeStatement($stmt);1197OCI8$stmt = OCIParse($conn,"select * from emp where empno in (1111,2222,3333)");OCIExecute($stmt);while (OCIFetchInto($stmt,&$arr,OCI_ASSOC)) {var_dump($arr);}OCIFreeStatement($stmt);/* delete our "junk" from the emp table.*/$stmt = OCIParse($conn,"delete from emp where empno in (1111,2222,3333)");OCIExecute($stmt);OCIFreeStatement($stmt);OCILogoff($conn);?>OstrzeżenieIt is a bad idea to use magic quotes and OciBindByName() simultaneously asno quoting is needed on quoted variables and any quotes magically appliedwill be written into your database as OciBindByName() is not able todistinguish magically added quotings from those added by intention.OCICancel (PHP 3>= 3.8, PHP 4 )Cancel reading from cursorint OCICancel ( int stmt) \linebreakIf you do not want read more data from a cursor, then call OCICancel().OCICollAppend (PHP 4 >= 4.6)Coming soonstring OCICollAppend ( object collection, object object) \linebreakOstrzeżenieTa funkcja jest obecnie nieudokumentowana, dostępna jest jedynie lista jejargumentów.1198OCI8OCICollAssign (PHP 4 >= 4.6)Coming soonstring OCICollAssign ( object collection, object object) \linebreakOstrzeżenieTa funkcja jest obecnie nieudokumentowana, dostępna jest jedynie lista jejargumentów.OCICollAssignElem (PHP 4 >= 4.6)Coming soonstring OCICollAssignElem ( object collection, string ndx, string val) \linebreakOstrzeżenieTa funkcja jest obecnie nieudokumentowana, dostępna jest jedynie lista jejargumentów.OCICollGetElem (PHP 4 >= 4.6)Coming soonstring OCICollGetElem ( object collection, string ndx) \linebreakOstrzeżenieTa funkcja jest obecnie nieudokumentowana, dostępna jest jedynie lista jejargumentów.OCICollMax (PHP 4 >= 4.6)Coming soonstring OCICollMax ( object collection) \linebreak1199OCI8OstrzeżenieTa funkcja jest obecnie nieudokumentowana, dostępna jest jedynie lista jejargumentów.OCICollSize (PHP 4 >= 4.6)Coming soonstring OCICollSize ( object collection) \linebreakOstrzeżenieTa funkcja jest obecnie nieudokumentowana, dostępna jest jedynie lista jejargumentów.OCICollTrim (PHP 4 >= 4.6)Coming soonstring OCICollTrim ( object collection, int num) \linebreakOstrzeżenieTa funkcja jest obecnie nieudokumentowana, dostępna jest jedynie lista jejargumentów.OCIColumnIsNULL (PHP 3>= 3.4, PHP 4 )Test whether a result column isNULLint OCIColumnIsNULL ( int stmt, mixed column) \linebreakOCIColumnIsNULL() returnsTRUEif the returned columncolumnin the result from thestatementstmtisNULL.You can either use the column-number (1-Based) or the column-name forthecolparameter.1200OCI8OCIColumnName (PHP 3>= 3.4, PHP 4 )Returns the name of a columnstring OCIColumnName ( int stmt, int col) \linebreakOCIColumnName() returns the name of the column corresponding to the column number (1-based)that is passed in.Przykład 1.OCIColumnNameSee also OCINumCols(), OCIColumnType(), and OCIColumnSize().OCIColumnPrecision (PHP 4 )Coming soonint OCIColumnPrecision ( int stmt, int col) \linebreak1201OCI8OstrzeżenieTa funkcja jest obecnie nieudokumentowana, dostępna jest jedynie lista jejargumentów.OCIColumnScale (PHP 4 )Coming soonint OCIColumnScale ( int stmt, int col) \linebreakOstrzeżenieTa funkcja jest obecnie nieudokumentowana, dostępna jest jedynie lista jejargumentów.OCIColumnSize (PHP 3>= 3.4, PHP 4 )Return result column sizeint OCIColumnSize ( int stmt, mixed column) \linebreakOCIColumnSize() returns the size of the column as given by Oracle.You can either use thecolumn-number (1-Based) or the column-name for thecolparameter.Przykład 1.OCIColumnSizeSee also OCINumCols(), OCIColumnName(), and OCIColumnSize().OCIColumnType (PHP 3>= 3 [ Pobierz całość w formacie PDF ]