Mega Code Archive

 
Categories / Php / MySQL Database
 

A database abstraction layer for the PHP Oracle 8 module

<?php // -*- C++ -*- /* * $Id: db-oci8.phl,v 1.2 1998/10/01 19:16:06 ssb Exp $ */ $db_error_code = 0; $db_error_msg = false; $db_error_source = false; /* * Database specific notes: * * - You must configure Oracle listener to use this abstraction layer. * */ /** * @function db_connect * @purpose Connect to a database * @desc * Connects to a database and returns and identifier for the connection. * @arg database * Data source name or database host to connect to. * @arg user * Name of user to connect as. * @arg password * The user's password. */ function db_connect($database, $user, $password) { $ret = @OCILogon($user, $password, $database); db_check_errors($php_errormsg); return $ret; } /* * Function: db_query * Arguments: $conn (int) - connection identifier * $query (string) - SQL statement to execute * Description: executes an SQL statement * Returns: false - query failed * integer - query succeeded, value is result handle */ function db_query($conn, $query) { $stmt = @OCIParse($conn, $query); db_check_errors($php_errormsg); if (!$stmt) { return false; } if (@OCIExecute($stmt)) { return $stmt; } db_check_errors($php_errormsg); @OCIFreeStatement($stmt); return false; } /* * Function: db_fetch_row * Arguments: $stmt (int) - result identifier * Description: Returns an array containing data from a fetched row. * Returns: false - error * (array) - returned row, first column at index 0 */ function db_fetch_row($stmt) { $cols = @OCIFetchInto($stmt, &$row); if (!$cols) { db_check_errors($php_errormsg); return false; } return $row; } /* * Function: db_free_result * Arguments: $stmt (int) - result identifier * Description: Frees all memory associated with a result identifier. * Returns: false - failure * true - success */ function db_free_result($stmt) { global $db_oci8_pieces; if (isset($db_oci8_pieces[$stmt])) { unset($db_oci8_pieces[$stmt]); } $ret = @OCIFreeStatement($stmt); db_check_errors($php_errormsg); return $ret; } /* * Function: db_disconnect * Arguments: $connection (int) - connection identifier * Description: closes a database connection * Returns: false - failure * true - success */ function db_disconnect($connection) { $ret = @OCILogoff($connection); db_check_errors($php_errormsg); return $ret; } /* * Function: db_autocommit * Arguments: $connection (int) - connection identifier * Description: turn autocommit on or off * Returns: false - failure * true - success */ function db_autocommit($connection, $enabled) { if (!$enabled) { db_post_error(0, "Transactions not yet implemented"); return false; } return true; } function db_commit($connection) { return true; } function db_rollback($connection) { db_post_error(0, "Transactions not yet implemented"); return false; } function db_quote_string($string) { $ret = ereg_replace( "'", "''", $string); return $ret; } function db_prepare($connection, $query) { global $db_oci8_pieces; $pieces = explode( "?", $query); $new_query = ""; $last_piece = sizeof($pieces) - 1; print "<br>last_piece=$last_piece\n"; while (list($i, $piece) = each($pieces)) { $new_query .= $piece; if ($i < $last_piece) { $new_query .= ":var$i"; } } print "<br>new_query=$new_query\n"; $stmt = @OCIParse($connection, $new_query); if (!$stmt) { db_check_errors($php_errormsg); return false; } for ($i = 0; $i < $last_piece; $i++) { $bindvar = ":var$i"; print "<br>trying to bind $bindvar\n"; if (!@OCIBindByName($stmt, $bindvar, &$db_oci8_pieces[$stmt][$i])) { db_check_errors($php_errormsg); @OCIFreeStatement($stmt); return false; } } return $stmt; } function db_execute($stmt, $data) { global $db_oci8_pieces; while (list($i, $value) = each($data)) { $db_oci8_pieces[$stmt][$i] = $data[$i]; } $ret = @OCIExecute($stmt); if (!$ret) { db_check_errors($php_errormsg); return false; } return true; } function db_error_code() { global $db_error_code; return $db_error_code; } function db_error_msg() { global $db_error_msg; return $db_error_msg; } function db_error_source() { global $db_error_source; return $db_error_source; } function db_check_errors($errormsg) { global $db_error_code, $db_error_msg, $db_error_source; if (ereg( '^([^:]*): (...-.....): (.*)', $errormsg, &$data)) { list($foo, $function, $db_error_code, $db_error_msg) = $data; $db_error_msg = "$function: $db_error_msg"; $db_error_source = "[Oracle][PHP][OCI8]"; } elseif (ereg( '^([^:]*): (.*)', $errormsg, &$data)) { list($foo, $function, $db_error_msg) = $data; $db_error_msg = "$function: $db_error_msg"; $db_error_code = 0; $db_error_source = "[PHP][OCI8][db-oci8]"; } else { $db_error_msg = $errormsg; $db_error_code = 0; $db_error_source = "[PHP][OCI8][db-oci8]"; } } function db_post_error($code, $message) { global $db_error_code, $db_error_msg, $db_error_source; $db_error_code = $code; $db_error_msg = $message; $db_error_source = "[PHP][OCI8][db-oci8]"; } function db_api_version() { return 10; // 1.0 } ?>