php MySQL数据库操作类源代码

时间:2022-12-11 09:06:44

php MySQL数据库操作类源代码:

<?php
class MySQL{
    private $host;                            //服务器地址
    private $name;                            //登录账号
    private $pwd;                            //登录密码
    private $dBase;                            //数据库名称
    private $conn;                            //数据库链接资源
    private $result;                        //结果集
    private $msg;                            //返回结果
    private $fields;                        //返回字段
    private $fieldsNum;                        //返回字段数
    private $rowsNum;                        //返回结果数
    private $rowsRst;                        //返回单条记录的字段数组
    private $filesArray = array();            //返回字段数组
    private $rowsArray = array();            //返回结果数组
    private $charset='utf8';                //设置操作的字符集
    private $query_count=0;                 //查询结果次数
    static private $_instance;                 //存储对象
    //初始化类
    private function __construct($host='',$name='',$pwd='',$dBase=''){
        if($host  !=  '')  $this->host  = $host;
        if($name  !=  '')  $this->name  = $name;
        if($pwd   !=  '')  $this->pwd   = $pwd;
        if($dBase !=  '')  $this->dBase = $dBase;
        $this->init_conn();
    }
    //防止被克隆
    private function __clone(){}
    public static function getInstance($host='',$name='',$pwd='',$dBase=''){
        if(FALSE == (self::$_instance instanceof self)){
            self::$_instance = new self($host,$name,$pwd,$dBase);
        }
        return self::$_instance;
    }
    public function __set($name,$value){
        $this->$name=$value;
    }
    public function __get($name){
        return $this->$name;
    }
    //链接数据库
    function init_conn(){
        $this->conn=@mysql_connect($this->host,$this->name,$this->pwd) or die('connect db fail !');
        @mysql_select_db($this->dBase,$this->conn) or die('select db fail !');
        mysql_query("set names ".$this->charset);
    }
    //查询结果
    function mysql_query_rst($sql){
        if($this->conn == '') $this->init_conn();
        $this->result = @mysql_query($sql,$this->conn);
        $this->query_count++;
    }
    //取得字段数 
    function getFieldsNum($sql){
        $this->mysql_query_rst($sql);
        $this->fieldsNum = @mysql_num_fields($this->result);
    }
    //取得查询结果数
    function getRowsNum($sql){
        $this->mysql_query_rst($sql);
        if(mysql_errno() == 0){
            return @mysql_num_rows($this->result);
        }else{
            return '';
        }    
    }
    //取得记录数组(单条记录)
    function getRowsRst($sql,$type=MYSQL_BOTH){
        $this->mysql_query_rst($sql);
        if(empty($this->result)) return '';
        if(mysql_error() == 0){
            $this->rowsRst = mysql_fetch_array($this->result,$type);
            return $this->rowsRst;
        }else{
            return '';
        }
    }
    //取得记录数组(多条记录)
    function getRowsArray($sql,$type=MYSQL_BOTH){
        !empty($this->rowsArray) ? $this->rowsArray=array() : '';
        $this->mysql_query_rst($sql);
        if(mysql_errno() == 0){
            while($row = mysql_fetch_array($this->result,$type)) {
                $this->rowsArray[] = $row;
            }
            return $this->rowsArray;
        }else{
            return '';
        }
    }
    //更新、删除、添加记录数
    function uidRst($sql){
        if($this->conn == ''){
            $this->init_conn();
        }
        @mysql_query($sql);
        $this->rowsNum = @mysql_affected_rows();
        if(mysql_errno() == 0){
            return $this->rowsNum;
        }else{
            return '';
        }
    }
    //返回最近插入的一条数据库的id值
    function returnRstId($sql){
        if($this->conn == ''){
            $this->init_conn();
        }
        @mysql_query($sql);
        if(mysql_errno() == 0){
            return mysql_insert_id();
        }else{
            return '';
        }
    }
    //获取对应的字段值
    function getFields($sql,$fields){
        $this->mysql_query_rst($sql);
        if(mysql_errno() == 0){
            if(mysql_num_rows($this->result) > 0){
                $tmpfld = @mysql_fetch_row($this->result);
                $this->fields = $tmpfld[$fields];
                
            }
            return $this->fields;
        }else{
            return '';
        }
    }
    //错误信息
    function msg_error(){
        if(mysql_errno() != 0) {
            $this->msg = mysql_error();
        }
        return $this->msg;
    }
    //释放结果集
    function close_rst(){
        mysql_free_result($this->result);
        $this->msg = '';
        $this->fieldsNum = 0;
        $this->rowsNum = 0;
        $this->filesArray = '';
        $this->rowsArray = '';
    }
    //关闭数据库
    function close_conn(){
        $this->close_rst();
        mysql_close($this->conn);
        $this->conn = '';
    }
    //取得数据库版本
    function db_version() {
        return mysql_get_server_info();
    }
}

调用方法如下:

include_once('mysql.class.php');
$db = MySQL::getInstance($db_host,$db_user,$db_pass,$db_data);
$sql = $db->getRowsArray("SELECT * FROM pre_forum_post WHERE fid=2 limit 0,5"); //选择数据
print_r($sql);