< ? 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 ?>