+ -
当前位置:首页 → 问答吧 → 基于PHP5的纯静态数据库访问类.

基于PHP5的纯静态数据库访问类.

时间:2007-07-06

来源:互联网

<?php
/*
数据库访问类 db
作者:朦�V中的罪��
博客地址:http://www.phpweblog.net/be-evil/
完成时间: 2007年6月28日
版权所有
转载请署名作者,博客地址,谢谢.
介绍:
本访问类是基于PHP5的纯静态类,可以不实例化对象调用类的方法,在OOP开发中非常方便.本类带有数据库查询次数记忆,sql语句错误处理功能.具体功能请见代码.本类部分功能参考了discuz的数据库访问类功能后编写.

如有什么地方写的不对或者不好请达人向我指出,本人虚心学习,谢谢.



*/
class db {
#公有属性
public static $conn;
public static $data;
public static $fields;
public static $row;
public static $row_num;
public static $insertid;
public static $version;
public static $affected_rows;
public static $query_num = 0;
public static $debug = false;
#私有属性
private static $user;
private static $pass;
private static $host;
private static $db;



#公有方法

/*
  公有静态方法,链接数据库初始化数据库访问对象
  $host 服务器地址
  $user 用户名
  $pass 密码
  $db  数据库名称
  
  无返回值
*/
public static function Connect($host,$user,$pass,$db) {
  self::$host = $host;
  self::$pass = $pass;
  self::$user = $user;
  self::$db   = $db;
  self::$conn = @ mysql_connect($host,$user,$pass) or self::msg(’连接数据库失败!可能是mysql数据库用户名或密码不正确!’);
  self::selectdb(self::$db);
  if( self::version() >’4.1′ ) {
   mysql_query(”SET NAMES ‘utf8′”);
  }
  if( self::version() > ‘5.0.1′ ) {
   mysql_query(”SET sql_mode=””);
  }
  
}

public static function query($sql) {
  $query = @ mysql_query($sql,self::$conn) or self::msg(”SQL语法错误:”.htmlspecialchars($sql));
  if(self::$debug) {
   echo $sql . “<br>\n”;
  }
  self::query_num();
  return $query;
}
  
public static function fetch_array($query) {
  self::$data = @mysql_fetch_array($query);
  return self::$data;
}

public static function num_fields($query) {
  self::$fields = @mysql_num_fields($query);
  return self::$fields;
}

public static function fetch_row($query) {
  self::$row = @mysql_fetch_row($query);
  return self::$row;
}
public static function num_rows($query) {
  self::$row_num = @mysql_num_rows($query);
  return self::$row_num;
}
   
public static function insert_id() {
  self::$insertid = mysql_insert_id();
  return self::$insertid;
}

public static function affected_rows() {
  self::$affected_rows = mysql_affected_rows(self::$conn);
  return self::$affected_rows;
}


public static function fetch_one_array($sql){
  $query = self::query($sql);
  self::$data = self::fetch_array($query);
  return self::$data;
}

public static function close() {
  mysql_close(self::$conn);
}

#私有方法

private static function query_num(){
  self::$query_num++;
}

private static function selectdb($db) {
  mysql_select_db($db,self::$conn) or self::msg(’未找到指定数据库!’);
}

private static function version() {
  self::$version = mysql_get_server_info();
  return self::$version;
}

private static function geterror() {
  return mysql_error();
}

private static function geterrno() {
  return intval(mysql_errno());
}
  
private static function msg($info) {
  echo “<html><head>\n”;
  echo “<meta http-equiv=\”Content-Type\” content=\”text/html ; charset=utf-8\”>\n”;
  echo “<title>警告,MySql查询错误.</title></head>\n<body>\n”;
  echo “<table width=\”800\”  align=\”center\” bgcolor=\”#f6f6f6\” cellpadding=\”0\” cellspacing=\”0\”>”;
  echo “<tr><td style=\”font-size:13px;font-family:Verdana;\”>\t<b>错误信息:</b>$info<br />”;
  echo “<b>Mysql error:</b><br />”.self::geterror().”<br />”;
  echo “<b>Mysql error number:</b>”.self::geterrno().”<br />\n”;
  echo “<b>Time</b>: “.gmdate(”Y-n-j g:ia”, time() + (8 * 3600)).”<br />\n”;
  echo “<b>Script</b>: “.$_SERVER[’PHP_SELF’].”<br /></td></tr>\n”;
  echo “</table>\n</body>\n</html>\n”;
  exit;
}

}  
?>

[ 本帖最后由 朦�V中的罪�� 于 2007-7-5 19:49 编辑 ]

作者: 朦�V中的罪�   发布时间: 2007-07-05

设一下高亮.......

作者: wukeyuan   发布时间: 2007-07-05