数据库封装类

Original 2019-04-08 23:39:20 274
abstract:<?phpClass DB {      private $link_id;    private $handle;    private $is_log;    private&nb

<?php

Class DB {

  

    private $link_id;

    private $handle;

    private $is_log;

    private $time;

  

    //构造函数

    public function __construct() {

        $this->time = $this->microtime_float();

        require_once("config.db.php");

        $this->connect($db_config["hostname"], $db_config["username"], $db_config["password"], $db_config["database"], $db_config["pconnect"]);

        $this->is_log = $db_config["log"];

        if($this->is_log){

            $handle = fopen($db_config["logfilepath"]."dblog.txt", "a+");

            $this->handle=$handle;

        }

    }

      

    //数据库连接

    public function connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect = 0,$charset='utf8') {

        if( $pconnect==0 ) {

            $this->link_id = @mysql_connect($dbhost, $dbuser, $dbpw, true);

            if(!$this->link_id){

                $this->halt("数据库连接失败");

            }

        } else {

            $this->link_id = @mysql_pconnect($dbhost, $dbuser, $dbpw);

            if(!$this->link_id){

                $this->halt("数据库持久连接失败");

            }

        }

        if(!@mysql_select_db($dbname,$this->link_id)) {

            $this->halt('数据库选择失败');

        }

        @mysql_query("set names ".$charset);

    }

      

    //查询

    public function query($sql) {

        $this->write_log("查询 ".$sql);

        $query = mysql_query($sql,$this->link_id);

        if(!$query) $this->halt('Query Error: ' . $sql);

        return $query;

    }

      

    //获取一条记录(MYSQL_ASSOC,MYSQL_NUM,MYSQL_BOTH)             

    public function get_one($sql,$result_type = MYSQL_ASSOC) {

        $query = $this->query($sql);

        $rt =& mysql_fetch_array($query,$result_type);

        $this->write_log("获取一条记录 ".$sql);

        return $rt;

    }

  

    //获取全部记录

    public function get_all($sql,$result_type = MYSQL_ASSOC) {

        $query = $this->query($sql);

        $i = 0;

        $rt = array();

        while($row =& mysql_fetch_array($query,$result_type)) {

            $rt[$i]=$row;

            $i++;

        }

        $this->write_log("获取全部记录 ".$sql);

        return $rt;

    }

      

    //插入

    public function insert($table,$dataArray) {

        $field = "";

        $value = "";

        if( !is_array($dataArray) || count($dataArray)<=0) {

            $this->halt('没有要插入的数据');

            return false;

        }

        while(list($key,$val)=each($dataArray)) {

            $field .="$key,";

            $value .="'$val',";

        }

        $field = substr( $field,0,-1);

        $value = substr( $value,0,-1);

        $sql = "insert into $table($field) values($value)";

        $this->write_log("插入 ".$sql);

        if(!$this->query($sql)) return false;

        return true;

    }

  

    //更新

    public function update( $table,$dataArray,$condition="") {

        if( !is_array($dataArray) || count($dataArray)<=0) {

            $this->halt('没有要更新的数据');

            return false;

        }

        $value = "";

        while( list($key,$val) = each($dataArray))

        $value .= "$key = '$val',";

        $value .= substr( $value,0,-1);

        $sql = "update $table set $value where 1=1 and $condition";

        $this->write_log("更新 ".$sql);

        if(!$this->query($sql)) return false;

        return true;

    }


Correcting teacher:天蓬老师Correction time:2019-04-09 11:17:46
Teacher's summary:将属性全部设置为私有, 是封装的一个前提, 是个好习惯

Release Notes

Popular Entries