Version: 1.0
Type: Function
Category: Databases
License: GNU General Public License
Description: Oracle database abstraction layer so you don’t have to hard-code oci?() all over your code. This is a port of tims database.php file. It’s not completly functional as some functions couldn’t be ported to oracle, I think I managed to get the ovaral usability of it. Bug come it plenty so just mail me about it 😉
<?php // // Port of the database abstraction layer found on www.phpbuilder.com // All old code is commented out // Must have $sys_dbhost,$sys_dbuser,$sys_dbpasswd declared in some include file // // By: yavor // Date: 31/08/00 // E-mail:[email protected] // function db_connect() { // global $sys_dbhost,$sys_dbuser,$sys_dbpasswd; // $conn = mysql_connect($sys_dbhost,$sys_dbuser,$sys_dbpasswd); // if (!$conn) { // echo mysql_error(); // } // return $conn; global $sys_dbhost,$sys_dbuser,$sys_dbpasswd,$_conn; $_conn = ociplogon($sys_dbuser,$sys_dbpasswd,$sys_dbhost); if (!$_conn) { echo "Error connecting to the database<br>n.Username:$sys_dbuser<br>Password:$sys_dbpasswd<br>nDBServer:$sys_dbhost"; } return $_conn; } function db_query($qstring) { // global $sys_dbname; NOTE:In oracle you don't have to specify the database // return @mysql($sys_dbname,$qstring); // oracle functions require a $conn so in the db_connect function I set // the $conn to be a global variable. // here i set the statment handler as a global also, required for // db_numrows and db_numfields functions global $_conn,$_stmt; $cur = ociparse($_conn,$qstring); ociexecute($cur); $_stmt = $cur; return $cur; } function db_numrows($qhandle) { // return only if qhandle exists, otherwise 0 //if ($qhandle) { // return @mysql_numrows($qhandle); //} else { // return 0; //} // Havent figured out how to do this yet. there isn't a compatible // function in oci to do this echo "This function is not supported in this port"; return 0; } function db_result($qhandle,$row,$field) { //return @mysql_result($qhandle,$row,$field); echo "This function is not supported in this port"; return 0; } function db_numfields($lhandle=0) { // return @mysql_numfields($lhandle); global $_stmt; return OCINumCols($_stmt); } function db_fieldname($lhandle=0,$fnumber) { // return @mysql_fieldname($lhandle,$fnumber); global $_stmt; return OCIColumnName($_stmt,$fnumber); } function db_affected_rows($qhandle) { // return @mysql_affected_rows(); return OCIRowCount($qhandle); } function db_fetch_array($qhandle,$assoc=1,$get_lobs=0) { // return @ mysql_fetch_array($qhandle); // If you want a numbered array then set assoc to 0 // If you have a binary field CLOB/BLOB set the third param to 1 // i know these are ugly hacks but I couldn't figure out // another way to do it $param = OCI_RETURN_NULLS; echo $param; if($assoc) $param = $param + OCI_ASSOC; if($get_lobs) $param = $param + OCI_RETURN_LOBS; echo $param; ocifetchinto($qhandle,$data,$param); return $data; } function db_insertid($qhandle) { // return @mysql_insert_id($qhandle); // this is also not supported by oracle // for insert id oracle uses sequenses, there maybe a hack availble here // yet by selecting the currvar from the sequence but this requires the sequence name // to be known. For now wait. echo "This function is not supported in this port"; return(0); } function db_error() { return "nn<P><B>Oracle error:".OCIError()."</B><P>nn"; } ?>