Mysql数据库操作类

来源:互联网 发布:淘宝延迟收货 编辑:程序博客网 时间:2024/04/27 20:53

<?php
/*
 * Mysql数据库操作类
 * 实现Mysql的连接,只支持操作mysql数据库。
 * 默认字符集:UTF-8
 * 使用方法:new MysqlConnection(数据库服务器地址,用户名,密码,数据库名,字符集='utf8');
 * 暂时功能:
 *  数据库查询 :Limit_Sql(表名,条件,查询字段)
 *  插入新数据 :Insert_Sql(表名,条件)、
 *  修改数据  :Update_Sql(表名,修改字段,条件)、
 *  删除数据  :Del_Sql(表名,条件)、
 *  清空表  :Trun_Sql(表名,条件)、
 *  直接执行语句 :SqlQuery(sql语句)、
 *  统计数据条数 :Count(表名,条件)、
 * 制作人:谭宁宁
 * 联系方式:QQ:597398742,MSN:cntnn11@live.cn
 * 最近修改时间:2011年09月14日
 *  修改说明:修正无法连接数据库的BUG!
 *   添加 connect()方法。用于数据库连接
 * 修改说明:修正query方法里的 $this->connect()连接句柄错误
 *   添加Count(tablename,where)方法。统计数据库条数
 * 说明:这是较深入学习‘面向对象’后进行的修改。
 *  欢迎各位PHP同行前来一块讨论!(尤其是女PHP开发,嘿嘿~)
 */
class MysqlConnection
{
 public $dbtype="";  //数据库连接类型
 public $dbip="";  //数据库服务器IP
 public $dbuser="";  //用户名
 public $dbpwd="";  //密码
 public $dbname="";  //数据库名称
 public $dbchar="utf8"; //字符集,默认utf8
 public $conn="";  //Mysql连接变量

 /*
  * 构造函数
  * 进行MySQL连接
  */
 function __construct($dbip,$dbuser,$dbpwd,$dbname,$dbchar='utf8')
 {
  $this->dbip=$dbip;
  $this->dbuser=$dbuser;
  $this->dbpwd=$dbpwd;
  $this->dbname=$dbname;
  $this->dbchar=$dbchar;
 }
 /*
  * 数据库链接方法
  */
 function connect()
 {
  $this->conn=mysql_connect($this->dbip,$this->dbuser,$this->dbpwd) or die('无法连接到数据库!');
  $this->sel_db();
  return $this->conn;
 }
 /*
  * 选择数据库&设置字符集
  */
 public function sel_db()
 {
  mysql_select_db($this->dbname) or die('无法打开数据库!'); //选择数据库
  mysql_set_charset($this->dbchar); //设置字符集
 }
 /*
  * query方式执行SQL语句
  * 返回一个未处理的查询结果集
  */
 private function query($sql)
 {
  $conn=$this->connect();
  $result=mysql_query($sql,$conn) or die("语句错误!请联系管理员解决!");
  return $result;
 }
 /*
  * 关闭数据库
  */
 public function close()
 {
  mysql_close($this->connect());
 }

 /*
  * SQL查询操作
  * 方法名:Limit_Sql(表名,条件,查询字段)
  */
 public function Limit_Sql($table_name,$where='',$sqldata='*')
 {
  $sql="select $sqldata from $table_name $where";/*生成sql语句*/

  $rs=$this->query($sql); /*本地调用query执行方法*/

  $this->close(); /*本地调用close方法,关闭数据库*/
  $this->free();

  if($rs)/*返回sql执行之后的结果集*/
  { return $rs;}
  else
  { return false;}

 }
 /*
 *直接执行sql语句
 *目前用于未考虑的sql语句
 */
 public function SqlQuery($sql)
 {
  $result=$this->query($sql);
  $this->close();

  if($result)
  { return $result; }
  else
  { return false; }
 }
 /*
 *功能:将查询得到的结果以二维数组的形式返回
 *返回的数组格式:array=(1=>array('字段'='字段值'));
 *配合Limit_Sql使用
 */
 public function R_Limit($result)
 {
  $list=array();
  $re=array();
  $i=0;
  while($rs=mysql_fetch_array($result))
  {
   $re[$i]=$rs;
   $i++;
  }

  foreach($re as $key=>$value)
  {
   foreach($value as $k2=>$v2)
   {
    //如果$2键名为数字,则continue,取消本次操作
    if(is_integer($k2))
    { continue; }
    //$key表示一共有几条数据$k2表示字段名,$v2表示该字段下的值
    $list[$key][$k2]=$v2;
   }
  }

  return $list;
 }

 /*
 *SQL添加操作
 *方法名:Insert_Sql(表名,查询字段,条件)
 */
 public function Insert_Sql($table_name,$sqldata,$where='')
 {
  $sql="insert into $table_name set $sqldata $where";
  /*本地调用连接方法*/
  $result=MysqlConnection::query($sql); /*本地调用query执行方法*/
  $this->close(); /*本地调用close方法,关闭数据库*/
  if($result)
  { return true;}
  else
  { return false;}
 }
 /*
 *SQL修改操作
 *方法名:Update_Sql(表名,查询字段,条件)
 */
 public function Update_Sql($table_name,$sqldata,$where='')
 {
  $sql="update $table_name set $sqldata $where";//生成SQL语句

  /*本地调用连接方法*/
  $result=$this->query($sql); /*本地调用query执行方法*/
  $this->close(); /*本地调用close方法,关闭数据库*/
  if($result)
  { return true;}
  else
  { return false;}
 }
 /*
 *删除操作
 *方法名:Del_Sql(表名,条件)
 */
 public function Del_Sql($table_name,$where='')
 {
  $sql="delete from $table_name $where";
  /*本地调用连接方法*/
  $result=$this->query($sql); /*本地调用query执行方法*/
  $this->close(); /*本地调用close方法,关闭数据库*/
  if($result)
  { return true;}
  else
  { return false;}
 }
 /*
 *清空表
 *方法名:Trun_Sql(表名)
 */
 public function Trun_Sql($table_name)
 {
  $sql="TRUNCATE TABLE $table_name";
  /*本地调用连接方法*/
  $result=$this->query($sql); /*本地调用query执行方法*/
  $this->close(); /*本地调用close方法,关闭数据库*/
  if($result)
  { return true;}
  else
  { return false;}
 }
 
 /*
  * 释放查询结果
  */
 function Count($table_name='',$where='')
 {
  $sql="select count(*) from $table_name $where";
  $result=$this->SqlQuery($sql);
  return $result;
 }

 /*
  * 释放查询结果
  */
 function free()
 {
  @mysql_free_result($this->connect());
 }
 /*
  * 析构函数
  */
    function __destruct()
    {

    }

}

?>