作者:麻廿_965 | 来源:互联网 | 2018-03-23 11:24
Postgresql DB 简单操作类
只用来执行SQL的 其它的不懂
//使用
define('DB_NAME', 'aaaa');// 数据库名
define('DB_USER', 'root');// 数据库用户
define('DB_PASSWORD', '123456');//数据库密码
define('DB_HOST', 'localhost');// 服务器名或服务器ip,一般为localhost
define('DB_CHARSET', 'utf8');//PostgreSQL编码设置.如果您的程序出现乱码现象,需要设置此项来修复. 请不要随意更改此项,否则将可能导致系统出现乱码现象
define('DB_PREFIX', 'icms_');// 表名前缀, 同一数据库安装多个请修改此处
define('DB_PREFIX_TAG', '#iCMS@__');// SQL表名前缀替换
iDB::query(sql);
iDB::getValue(sql);
iDB::getRow(sql);
iDB::getArray(sql);
1.iPgsql.class.php
* @site http://www.iiiphp.com
* @licence http://www.iiiphp.com/license
* @version 1.0.1
* @package iDB
* @$Id: iPgsql.class.php 44 2012-03-30 04:02:10Z coolmoo $
*/
define('DB_PORT', 5432);
define('OBJECT', 'OBJECT', true);
define('ARRAY_A', 'ARRAY_A', false);
define('ARRAY_N', 'ARRAY_N', false);
defined('SAVEQUERIES') OR define('SAVEQUERIES', true);
class iDB{
public static $show_errors = false;
public static $num_queries = 0;
public static $last_query;
public static $col_info;
public static $queries;
public static $func_call;
public static $last_result;
public static $num_rows;
public static $insert_id;
private static $collate;
private static $time_start;
private static $last_error ;
private static $dbh;
private static $result;
function __construct() {
if (!self::$dbh)
self::connect();
}
function connect() {
extension_loaded('pgsql') OR die('您的 PHP 安装看起来缺少 PostgreSQL 数据库部分,
这对 iPHP 来说是必须的。');
defined('DB_COLLATE') && self::$collate = DB_COLLATE;
self::$dbh = pg_connect("host=".DB_HOST." port=".DB_PORT." dbname=".DB_NAME.
" user=".DB_USER." password=".DB_PASSWORD);
defined('DB_CHARSET') && self::query("set client_encoding to '".DB_CHARSET."'");
self::$dbh OR self::bail("数据库链接失败
请检查 config.php 的配置是否正确!
- 请确认主机支持PostgreSQL?
- 请确认用户名和密码正确?
- 请确认主机名正确?(一般为localhost)
如果你不确定这些情况,请询问你的主机提供商.
如果你还需要帮助你可以随时浏览 iPHP 支持论坛.
");
//@mysql_select_db(DB_NAME, self::$dbh) OR self::bail("
链接到".DB_NAME."数据库失败
我们能连接到数据库服务器(即数据库用户名和密码正确) ,但是不能链接到$db数据库.
如果你不确定这些情况,请询问你的主机提供商.如果你还需要帮助你可以随时浏览
iPHP 支持论坛.
");
}
// ==================================================================
// Print SQL/DB error.
function print_error($str = '') {
if (!$str)
$str = pg_result_error(self::$dbh);
$EZSQL_ERROR[] = array ('query' => self::$last_query, 'error_str' => $str);
$str = htmlspecialchars($str, ENT_QUOTES);
$query = htmlspecialchars(self::$last_query, ENT_QUOTES);
// Is error output turned on or not..
if ( self::$show_errors ) {
// If there is an error then take note of it
die("
iPHP database error: [$str]
$query
");
} else {
return false;
}
}
// ==================================================================
// Kill cached query results
function flush() {
self::$last_result = array();
self::$col_info = null;
self::$last_query = null;
}
// ==================================================================
// Basic Query - see docs for more detail
function query($query,$QT=NULL) {
if (!self::$dbh) {
self::connect();
}
// filter the query, if filters are available
// NOTE: some queries are made before the plugins have been loaded,
and thus cannot be filtered with this method
$query=str_replace(DB_PREFIX_TAG,DB_PREFIX, $query);
// initialise return
$return_val = 0;
self::flush();
// Log how the function was called
self::$func_call = __CLASS__."::query(\"$query\")";
// Keep track of the last query for debug..
self::$last_query = $query;
// Perform the query via std pgsql_query function..
if (SAVEQUERIES) self::timer_start();
self::$result = pg_query(self::$dbh,$query);
self::$num_queries++;
if (SAVEQUERIES) self::$queries[] = array( $query, self::timer_stop());
// If there is an error then take note of it..
if ( self::$last_error = pg_result_error(self::$result) ) {
self::print_error();
return false;
}
$QH = strtoupper(substr($query,0,strpos($query, ' ')));
if (in_array($QH,array("INSERT","DELETE","UPDATE","REPLACE"))) {
$rows_affected = pg_affected_rows (self::$result);
// Take note of the insert_id
if (in_array($QH,array("INSERT","REPLACE"))) {
self::$insert_id = pg_last_oid(self::$result);
}
// Return number of rows affected
$return_val = $rows_affected;
} else {
if($QT=="field") {
$i = 0;
while ($i
value relationships.
Multiple member pairs will be joined with ANDs.
WARNING: the column names are not currently sanitized!
* @return mixed results of self::query()
*/
function update($table, $data, $where) {
// $data = add_magic_quotes($data);
$bits = $wheres = array();
foreach ( array_keys($data) as $k )
$bits[] = "`$k` = '$data[$k]'";
if ( is_array( $where ) )
foreach ( $where as $c => $v )
$wheres[] = "$c = '" . addslashes( $v ) . "'";
else
return false;
return self::query("UPDATE ".DB_PREFIX_TAG."{$table} SET "
. implode( ', ', $bits ) . ' WHERE ' .
implode( ' AND ', $wheres ) . ' LIMIT 1' );
}
/**
* Get one variable from the database
* @param string $query (can be null as well, for caching, see codex)
* @param int $x = 0 row num to return
* @param int $y = 0 col num to return
* @return mixed results
*/
function getValue($query=null, $x = 0, $y = 0) {
self::$func_call = __CLASS__."::getValue(\"$query\",$x,$y)";
if ( $query )
self::query($query);
// Extract var out of cached results based x,y vals
if ( !empty( self::$last_result[$y] ) ) {
$values = array_values(get_object_vars(self::$last_result[$y]));
}
// If there is a value return it else return null
return (isset($values[$x]) && $values[$x]!=='') ? $values[$x] : null;
}
/**
* Get one row from the database
* @param string $query
* @param string $output ARRAY_A | ARRAY_N | OBJECT
* @param int $y row num to return
* @return mixed results
*/
function getRow($query = null, $output = OBJECT, $y = 0) {
self::$func_call = __CLASS__."::getRow(\"$query\",$output,$y)";
if ( $query )
self::query($query);
if ( !isset(self::$last_result[$y]) )
return null;
if ( $output == OBJECT ) {
return self::$last_result[$y] ? self::$last_result[$y] : null;
} elseif ( $output == ARRAY_A ) {
return self::$last_result[$y] ? get_object_vars(self::$last_result[$y]) : null;
} elseif ( $output == ARRAY_N ) {
return self::$last_result[$y]
? array_values(get_object_vars(self::$last_result[$y])) : null;
} else {
self::print_error(__CLASS__."::getRow(string query, output type, int offset)
-- Output type must be one of: OBJECT, ARRAY_A, ARRAY_N");
}
}
/**
* Return an entire result set from the database
* @param string $query (can also be null to pull from the cache)
* @param string $output ARRAY_A | ARRAY_N | OBJECT
* @return mixed results
*/
function getArray($query = null, $output = ARRAY_A) {
self::$func_call = __CLASS__."::getArray(\"$query\", $output)";
if ( $query )
self::query($query);
// Send back array of objects. Each row is an object
if ( $output == OBJECT ) {
return self::$last_result;
} elseif ( $output == ARRAY_A || $output == ARRAY_N ) {
if ( self::$last_result ) {
$i = 0;
foreach( (array) self::$last_result as $row ) {
if ( $output == ARRAY_N ) {
// ...integer-keyed row arrays
$new_array[$i] = array_values( get_object_vars( $row ) );
} else {
// ...column name-keyed row arrays
$new_array[$i] = get_object_vars( $row );
}
++$i;
}
return $new_array;
} else {
return null;
}
}
}
/**
* Gets one column from the database
* @param string $query (can be null as well, for caching, see codex)
* @param int $x col num to return
* @return array results
*/
function getCol($query = null , $x = 0) {
if ( $query )
self::query($query);
$new_array = array();
// Extract the column values
for ( $i=0; $i {$info_type};
$i++;
}
return $new_array;
} else {
return self::$col_info[$col_offset]->{$info_type};
}
}
}
function version() {
// Make sure the server has PostgreSQL 4.0
$v = pg_version(self::$dbh);
return $v['client'];
}
/**
* Starts the timer, for debugging purposes
*/
function timer_start() {
$mtime = microtime();
$mtime = explode(' ', $mtime);
self::$time_start = $mtime[1] + $mtime[0];
return true;
}
/**
* Stops the debugging timer
* @return int total time spent on the query, in milliseconds
*/
function timer_stop() {
$mtime = microtime();
$mtime = explode(' ', $mtime);
$time_end = $mtime[1] + $mtime[0];
$time_total = $time_end - self::$time_start;
return $time_total;
}
/**
* Wraps fatal errors in a nice header and footer and dies.
* @param string $message
*/
function bail($message){ // Just wraps errors in a nice header and footer
if ( !self::$show_errors ) {
return false;
}
header('Content-Type: text/html; charset=utf8');
echo '
'.$message.'
';
exit();
}
}
以上就是PostgreSQL DB 简单操作类的内容,更多相关内容请关注PHP中文网(www.php1.cn)!