?
php
/* =========
* PHP DbLib
* =========
* A smart database indipendent library for PHP3/4/5 (6?)
*
* @2000 by Antonio Gallo aka agx
* mailto:agx@linux.it http://www.badpenguin.org/
* mailto:agx@geocities.com http://www.linux.it/~agx/
*
* This software is released under the GNU GPL license
* got to http://www.gnu.org to get a copy of this license
*
*
* === ChangeLog ===
* 1.0.1 - Sun Nov 19 05:52:55 2000 Added DbPrintGlobals
* 1.0.2 - 2001-04-20 StripSlashes applied to DbExtractRow
* 1.0.3 - 2001-11-07 added $recno to know when to run mysql_data_seek()
* 1.0.4 - 2001-11-13 DbExtractRow bug fixing
* 1.0.5 - 2006-??-?? somechanges made to be easily integrated with my structure (virer.net)
*
*
* === Config ===
*
* 1. to use the MySQL unix_timstamp() function also under PostgreSQL you can create the following PGSQL function:
* create function unix_timestamp(datetime) returns int4 as 'select date_part(''epoch'', $1 )::int4' language 'sql';
*
* 2. Uncomment the driver of the database you wanna use :
*
*/
$dblib_driver = "mysql"; // your database : mysql or pgsql
$db_username = "dbsql-username"; // your sql username
$db_password = "dbsql-password"; // your sql password
$db_hostname = "localhost"; // generaly localhost
$db_database = "dbsql-name"; // database name
/*
* Usage example for both mysql or pgsql :
*
* $db_link= DbConnect(); // connect to sql host
* $res = DbQuery($db_link,"SELECT * FROM mydatabase WHERE id = '1'");
* while ($row = Dbfetchassoc($res)) {
* $id = $row['id'];
* echo "id:".$id."\n";
* $resd = DbQuery($db_link,"DELETE FROM mydatabase WHERE id = '1'");
* $resi = DbQuery($db_link,"INSERT INTO mydatabase (id) VALUES ("1")");
* }
* DbClose($db_link);
*/
// *** NOT CHANGE TO MADE AFTER THIS LINE ***
//
function MySQLTimestamp($t) {
global $dblib_driver;
if ( $dblib_driver == 'mysql') {
// Convert a MySQL string from a datatime field directly into a unix-timestamp
return mktime( substr($t,11,2), substr($t,14,2), substr($t,17,2), substr($t,5,2), substr($t,8,2), substr($t,0,4) );
} else {
// REMEMBER TO SET DATESTYLE TO ISO!!
return mktime( substr($t,11,2), substr($t,14,2), substr($t,17,2), substr($t,5,2), substr($t,8,2), substr($t,0,4) );
}
}
//
function FatalError( $str, $nfun ) {
echo "\n\n";
echo "($nfun) $str\n\n";
exit;
}
//
function FatalQueryError( $qry, $str ) {
echo "\n\n";
echo "(QueryError) $str\nDetails: $qry\n\n";
exit;
}
//
function DbConnect() {
global $dblib_driver,$db_database,$db_hostname,$db_username,$db_password;
switch($dblib_driver) {
case "pgsql":
$opt = "dbname=$db_database host=$db_hostname user=$db_username password=$db_password authtype=password";
$cnn = pg_connect( $opt );
if (!$cnn) FatalError("Error connecting to $db_hostname", 'DbConnect' );
$opt = "";
return $cnn;
break;
case "mysql":
$cnn = mysql_connect( $db_hostname, $db_username, $db_password );
if (!$cnn) FatalError("Error connecting to $db_hostname", 'DbConnect' );
if ( ! mysql_select_db($db_database, $cnn) ) {
FatalError("Error selecting database $db_database", 'DbConnect' );
}
return $cnn;
break;
default:
FatalError( 'Driver: '.$dblib_driver.' unknown', 'DbConnect' );
}
}
function DbPConnect() {
global $dblib_driver,$db_database,$db_hostname,$db_username,$db_password;
switch($dblib_driver) {
case "pgsql":
$opt = "dbname=$db_database host=$db_hostname user=$db_username password=$sql_password authtype=password";
$cnn = pg_pconnect( $opt );
if (!$cnn) FatalError("Error connecting to $db_hostname", 'DbPConnect' );
$opt = "";
return $cnn;
break;
case "mysql":
$cnn = mysql_pconnect( $db_hostname, $db_username, $db_password );
if (!$cnn) FatalError("Error connecting to $db_hostname", 'DbPConnect' );
if ( ! mysql_select_db($db_database, $cnn) ) {
FatalError("Error selecting database $db_dataname", 'DbPConnect' );
}
return $cnn;
break;
default:
FatalError( "Driver '$dblib_driver' unknown", 'DbPConnect' );
}
}
//
function DbQuery( $cnn, $qry ) {
global $dblib_driver, $recno;
$recno=0;
switch($dblib_driver) {
case "pgsql":
$qry = eregi_replace( 'NOW\(\)', 'NOW()::datetime', $qry );
$qry = eregi_replace( 'limit .*', '', $qry );
$rs = pg_Exec( $cnn, stripslashes($qry) );
if (!$rs) FatalQueryError( $qry, pg_ErrorMessage($cnn) );
return $rs;
break;
case "mysql":
$rs = mysql_query( $qry, $cnn );
if (!$rs) FatalQueryError( $qry, mysql_error($cnn) );
return $rs;
break;
default:
FatalError( "Driver $dblib_driver unknown", 'RunQuery' );
}
}
function DbQuerySoft( $cnn, $qry ) {
// Like DbQuery but not exit on errors
global $dblib_driver, $recno;
$recno=0;
switch($dblib_driver) {
case "pgsql":
$rs = @pg_Exec( $cnn, stripslashes($qry) );
return $rs;
break;
case "mysql":
$rs = @mysql_query( $qry, $cnn );
return $rs;
break;
default:
FatalError( "Driver $dblib_driver unknown", 'RunQuery' );
}
}
//
function DbQueryResult( $cnn, $res ) {
global $dblib_driver;
switch($dblib_driver) {
case "pgsql":
return pg_cmdTuples( $res );
break;
case "mysql":
return mysql_affected_rows( $cnn );
break;
default:
FatalError( "Driver $dblib_driver unknown", 'QueryResult' );
}
}
//
function DbQuerySize( $res ) {
global $dblib_driver;
switch($dblib_driver) {
case "pgsql":
return pg_NumRows( $res );
break;
case "mysql":
return mysql_num_rows( $res );
break;
default:
FatalError( "Driver $dblib_driver unknown", 'QueryResult' );
}
}
//
function DbGetRow( $res, $nrow ) {
global $dblib_driver, $recno;
switch($dblib_driver) {
case "pgsql": {
$iret = pg_Fetch_Array( $res, $nrow );
$recno++;
return $iret;
break;
}
case "mysql": {
if ($nrow!=$recno) mysql_data_seek($res, $nrow);
$iret = mysql_Fetch_Array( $res );
$recno++;
return $iret;
break;
}
default:
FatalError( "Driver $dblib_driver unknown", 'QueryRow' );
}
}
//
function DbExtractRow( $res, $nrow, $prefix ) {
global $dblib_driver;
switch($dblib_driver) {
case "pgsql": {
$iret = pg_Fetch_Array( $res, $nrow );
if (!$iret) return false;
$l = pg_numfields($res);
$recno++;
//
for ($i=0;$i<$l;$i++) {
$n = $prefix . pg_fieldname($res,$i);
$v = $iret[$i];
if (is_string($v)) {
$GLOBALS[$n] = ''. StripSlashes($v);
} else {
$GLOBALS[$n] = $v;
}
}
return true;
break;
}
case "mysql":
if ($nrow!=$recno) mysql_data_seek($res, $nrow);
$iret = mysql_Fetch_Array( $res );
if (!$iret) return false;
$l = mysql_num_fields($res);
$recno++;
//
for ($i=0;$i<$l;$i++) {
$n = $prefix . mysql_field_name($res,$i);
$v = $iret[$i];
if (is_string($v)) {
$GLOBALS[$n] = ''. StripSlashes($v);
} else {
$GLOBALS[$n] = $v;
}
}
return true;
break;
default:
FatalError( "Driver $dblib_driver unknown", 'QueryRow' );
return false;
}
return false;
}
//
function DbDestroyQuery( $res ) {
global $dblib_driver;
switch($dblib_driver) {
case "pgsql":
return pg_FreeResult( $res );
break;
case "msql":
return mysql_free_result( $res );
break;
default:
FatalError( "Driver $dblib_driver unknown", 'DestroyQuery' );
}
}
//
function DbClose( $cnn ) {
global $dblib_driver;
switch($dblib_driver) {
case "pgsql":
return pg_Close( $cnn );
break;
case "mysql":
return mysql_Close( $cnn );
break;
default:
FatalError( "Driver $dblib_driver unknown", 'DbClose' );
}
}
//
function DbQueryFields( $res ) {
global $dblib_driver;
switch($dblib_driver) {
case "pgsql":
return pg_numfields($res);
break;
case "mysql":
return mysql_num_fields($res);
break;
default:
FatalError( "Driver $dblib_driver unknown", 'DbQueryFields' );
}
}
//
function DbFieldName( $res, $i ) {
global $dblib_driver;
switch($dblib_driver) {
case "pgsql":
return pg_fieldname($res,$i);
break;
case "mysql":
return mysql_field_name($res,$i);
break;
default:
FatalError( "Driver $dblib_driver unknown", 'DbFieldName' );
}
}
//
function DbFieldType( $res, $i ) {
global $dblib_driver;
switch($dblib_driver) {
case "pgsql":
return pg_FieldType($res,$i);
break;
case "mysql":
return mysql_field_type($res,$i);
break;
default:
FatalError( "Driver $dblib_driver unknown", 'DbFieldType' );
}
}
//
function DbFieldSize( $res, $i ) {
global $dblib_driver;
switch($dblib_driver) {
case "pgsql":
return pg_FieldSize($res,$i);
break;
case "mysql":
return mysql_field_len($res,$i);
break;
default:
FatalError( "Driver $dblib_driver unknown", 'DbFieldType' );
}
}
//
function DbPrintGlobals() {
while ( $e = each($GLOBALS) ) {
echo $e[0] .'='. $e[1]. "
\n";
}
}
function Dbfetchassoc($res) {
global $dblib_driver;
switch($dblib_driver) {
case "pgsql":
return pg_fetch_assoc($res);
break;
case "mysql":
return mysql_fetch_assoc($res) ;
break;
default:
FatalError( "Driver $dblib_driver unknown", 'DbQueryFields' );
}
}
// End of dblib.inc
?>