发新话题
打印

发一个简单的数据库操作类,可满足大多需求

发一个简单的数据库操作类,可满足大多需求

复制内容到剪贴板
代码:
<?php
/*
* Eyusi System for PHP5
* (C) Copyright 2006 eyusi.com !
*  Author: Archon   enzewei@gmail.com
* $Id: Manager.DataBase.Class , V 1.5.  2006/12/18 17:48 $
*/
Class DataBase
{
//------------------ This Content Include Private Variable -----------------//
//数据库类型
//DataBase Type
private $dbtype = '1';
private $database = '';
//数据库地址
//DataBase Host
private $dbhost = '127.0.0.1';
//数据库服务所使用端口
//DataBase Service Port
private $dbport = '3306';
//数据库是否允许永久连接
//Allow Physice Connect To DataBase
private $pconnect = '0';
//转换数据库类型为中文 -----可扩展为语言包形式
//Translate DataBase Type For Chinese ---- It Can Extend Lang
private $dbtocn = '';
//数据库连接资源
//Connect DataBase Resource
private $dblink = '';
//选择数据库返回资源
//Select DataBase Back Resource
private $dbselect = '';
//数据库查询SQL语句
//Query DataBase SQL
private $sql = '';
//返回数据库查询资源
//Back DataBase Query Resource
private $query = '';
//返回数据库查询记录数目
//Back DataBase Query Records Number
private $num = 0;
//以数组形式返回数据库查询结果
//Back DataBase Query Result of Array
private $res_array = array();
//以对象形式返回数据库查询结果
//Back DataBase Query Result of Object
private $res_object = '';
//返回数据库最后一条插入记录操作的ID
//Get Last Insert Record ID
private $res_id = 0;
//访问类的属性时需要用到的两个变量,不可更改
//When Call Class Property Use Two Variable, Don't Modify
private $name = '';
private $value = '';

//设置时间及类型
private $exec_time = 0;
private $timetype = 1;
private $fmt_time = 1;
private $datetype='';
/*-----------------------------------------*/
//错误类型
//Error Type
//private $errortype = '';
//数据库错误
//DataBase Error
//private $dberror = '';
//数据库表错误
//Error DataBase Table
//private $tblerror = '';
//错误信息
//Error Info
private $error = '';
//管理员信息  你可以修改这里
//Administrator Info You Can Modify Here
private $admin = array('mail'=>'enze@sina100.com','name'=>'Administrator');
//时区  你可以修改这里
//TimeZone You Can Modify Here
private $timezone = 8;
//时区参数  你可以修改这里
//TimeZone Parameter You Can Modify Here
private $time_zone_parameter = "Asia/Shanghai";
//调试
//Debug
private $debug=false;
//终止执行
//Exit exec programe if use Ajax Here will false;  Don't modify here  Use The Function
public $exec=true;
/*-----------------------------------------*/

//--------------------This Content Include Public Variable --------------//
//数据库帐号名
//DataBase UserName
public $dbuser = '';
//数据库密码
//DataBase Password
public $dbpswd = '';
//数据库名
//DataBase Name
public $dbname = '';

/*//如果数据库名为数组则下面为其键名与值
public $dbaryname = array();
private $dbkey = '';
private $dbval = '';*/
//数据库连接使用字符集
//Charset Of DataBase Connect
public $charset = 'utf8';
//------------------- Function ----------------------//
function __construct($dbinfo)
{
  $this->db = empty($dbinfo['type'])?$this->db:$dbinfo['type'];
  $this->dbhost = empty($dbinfo['host'])?$this->dbhost:$dbinfo['host'];
  $this->dbuser = empty($dbinfo['user'])?$this->dbuser:$dbinfo['user'];
  $this->dbport = empty($dbinfo['port'])?$this->dbport:$dbinfo['port'];
  $this->dbpswd = empty($dbinfo['pswd'])?$this->dbpswd:$dbinfo['pswd'];
  $this->dbname = empty($dbinfo['name'])?$this->dbname:$dbinfo['name'];
  $this->pconnect = empty($dbinfo['pcon'])?$this->pconnect:$dbinfo['pcon'];
  $this->charset = empty($dbinfo['char'])?$this->charset:$dbinfo['char'];
  $this->database = $this->__get_DataBase();
}
function __destruct()
{
  switch($this->db)
  {
   case 1:
    if($this->pconnect!=1)
    {
     @mysql_close();
    }
   break;
   default:
   
   break;
  }
}
//获取数据库类型,私有函数
private function __get_DataBase()
{
  switch($this->db)
  {
   case 1:
    $this->dbtocn = 'MySql';
   break;
   default:
   break;
  }
  return $this->dbtocn;
}
//连接数据库,公有函数
public function connect()
{
  switch($this->db)
  {
   case 1:
    if($this->pconnect==1)
    {
     $this->dblink =@mysql_pconnect($this->dbhost.':'.$this->dbport,$this->dbuser,$this->dbpswd) or $this->__get_error(mysql_errno());
    }
    else
    {
     $this->dblink =@mysql_connect($this->dbhost.':'.$this->dbport,$this->dbuser,$this->dbpswd) or $this->__get_error(mysql_errno());
    }
   break;
   default:
   break;
  }
  return $this->dblink;
}

//关闭数据库连接
public function dbclose()
{
  switch($this->db)
  {
   case 1:
    if($this->pconnect!=1)
    {
     mysql_close();
    }
   break;
   default:
   
   break;
  }
}
//选择数据库,公有函数
public function select()
{
  switch($this->db)
  {
   case 1:
    @mysql_query("set names '".$this->charset."'");
    $this->dbselect = @mysql_select_db($this->dbname,$this->dblink) or $this->__get_error(mysql_errno());
   break;
   default;
   break;
  }
  return $this->dbselect;
}
//返回查询数据资源,公有函数
public function query($sql)
{
  $this->sql=$sql;
  if(!$this->dblink)
  {
   $this->connect();
   $this->select();
  }
  switch($this->db)
  {
   case 1:
    $this->__get_sql();
    if($this->exec)
    {
     $this->query = @mysql_query($this->sql) or $this->__get_error(mysql_errno());
    }
    else
    {
     $this->query = @mysql_query($this->sql);
    }
   break;
   default:
   break;
  }
  return $this->query;
}

//返回数据库查询记录数目,公有函数
public function query_num($query)
{
  switch($this->db)
  {
   case 1:
    if($this->exec)
    {
     $this->num = @mysql_num_rows($query) or $this->__get_error(mysql_errno());
    }
    else
    {
     $this->num = @mysql_num_rows($query);
    }
   break;
   default:
   break;
  }
  return $this->num;
}

//返回数据库查询记录数目,公有函数
public function getRow($sql)
{
  $res_array=$this->query_array($this->query($sql)) or $this->__get_error(mysql_errno());
  return $res_array;
}

//以数组的形式返回数据库查询结果
//Query DataBase Record Method Array
public function query_array($query)
{
  switch($this->db)
  {
   case 1:
    if($this->exec)
    {
     $this->res_array = @mysql_fetch_array($query) or $this->__get_error(mysql_errno());
    }
    else
    {
     $this->res_array = @mysql_fetch_array($query);
    }
   break;
   default:
   break;
  }
  return $this->res_array;
}
//以对象形式返回数据库查询结果
//Query DataBase Record Method Object
public function query_object($query)
{
  switch($this->db)
  {
   case 1:
    if($this->exec)
    {
     $this->res_object = @mysql_fetch_object($query) or $this->__get_error(mysql_errno());
    }
    else
    {
     $this->res_object = @mysql_fetch_object($query);
    }
   break;
   default:
   break;
  }
  return $this->res_object;
}
//获取最后一次数据库插入记录的ID
//Get Last Insert Record ID
public function get_id()
{
  switch($this->db)
  {
   case 1:
    $this->res_id = mysql_insert_id() or $this->__get_error(mysql_errno());
   break;
   default:
   break;
  }
  return $this->res_id;
}

public function free_result($query)
{
  switch($this->db)
  {
   case 1:
    @mysql_free_result($query);
   break;
   default;
   break;
  }
  return true;
}

//跟踪数据库查询,私有函数
private function __get_sql()
{
  if($this->debug)
  {
   print $this->sql."<br />";
  }
}
//获取错误信息
private function __get_error($error)
{
  if(!$error)
  {
   return;
  }
  switch($error)
  {
   case 1130:
    $msg='Connect "'.$this->database.'" Failed!  "'.$this->database.'" May Be Not Install at Host:"'.$this->dbhost.'"';
   break;
   case 2003:
    $msg='Connect "'.$this->database.'" Failed!  "'.$this->database.'" May Be Not Install at Host:"'.$this->dbhost.'" Port:"'.$this->dbport.'"';
   break;
   default:
    $msg=$this->database.' '.mysql_error();
   break;
  }
  return $this->__format_error($msg);
}
//格式化错误信息
private function __format_error(&$msg)
{
  print "<style type=\"text/css\">\r\n";
  print "body{\r\n";
  print "  font:12px 'Courier New';\r\n";
  print "  line-height:22px;\r\n";
  print "}\r\n";
  print "</style>\r\n";
  print 'DataBase : '.$this->database.'<br />';
  print 'Error Date : '.$this->__format_date(1).'<br />';
  print 'Error SQL : '.$this->sql.'<br />';
  print 'Error Info : '.$msg.'<br />';
  print 'Please Contact Us :  <address>'.$this->admin['name'];
  print ' <a href="admin['mail'].'">'.$this->admin['mail'].'
mailto:'.$this->admin['mail'].'">'.$this->admin['mail'].'</a></address><br />';
  if($this->exec)
  {
   exit;
  }
}
//格式化时间
private function __format_date($fmt_time)
{
  switch($fmt_time)
  {
   case 1:
    $this->datetype = date("D M j G:i:s  Y",$this->__get_date());
   break;
   case 2:
    $this->datetype = date("Y-n-j H:i:s",$this->__get_date());
   break;
   default;
  }
  return $this->datetype;
}
//获取时间
private function __get_date()
{
  switch($this->timetype)
  {
   case 1:
    $this->exec_time = time();
   break;
   case 2:
    $this->exec_time = microtime();
   break;
   default;
  }
  
  //获取时区
  if(date_default_timezone_get()!=$this->time_zone_parameter)
  {
   return $this->exec_time+$this->timezone*3600;
  }
  else
  {
   return $this->exec_time;
  }
}
//读取类的属性
private function __get($name)
{
  return $this->$name;
}
//设置类属性
private function __set($name,$value)
{
  return $this->$name=$value;
}
}

/*------------ Example For This Class ------------------
//$dbinfo类型数组,数据库信息

//You Can Modify This File If It Have Flag
//You Can Modify This
$dbinfo['type'] = '1';     //数据库类型  1为mysql 2为pgsql
//You Can Modify This
//$dbinfo['host'] = '192.168.3.107';   //数据库地址
//You Can Modify This
$dbinfo['port'] = '3306';    //数据库使用端口
//You Can Modify This
$dbinfo['pcon'] = '0';     //是否允许永久连接 0为不允许1为允许
//Please Don't Modify This
$dbinfo['char'] = 'utf8';    //数据库连接类型
//You Can Modify This
//$dbinfo['user'] = 'db_count';    //数据库帐号
$dbinfo['user'] = '';    //数据库帐号
//You Can Modify This
$dbinfo['pswd'] = '';    //数据库密码
//You Can Modify This
//数据库名称
$dbinfo['name'] = 'db_count';
//以上可以写入某个config文件中


$db=new DataBase($dbinfo);
//发出查询请求
$que=$db->query("select * from db_user where 1");
//以数组的形式返回查询结果,需要循环显示
$array=$db->query_array($que);
//以对象的形式返回查询结果,需要循环显示
$object=$db->query_object($que);
//获取查询记录的数目
$num=$db->query_num($que);
//获取最后操作插入的ID
$num=$db->get_id();
*/
?>
[ 本帖最后由 chris 于 2007-9-17 22:08 编辑 ]
广告位招租。

TOP

好东西,收藏了,慢慢研究~

TOP

猛 我慢慢研究

TOP

学习一下,先收藏了

TOP

忘了谢谢!谢谢

TOP

发新话题