mysql类

<?php 
    header("Content-type:text/html;charset=utf-8");
    defined("ACC") || exit("非法访问");
    class mysql extends abssql    {
        protected $host;
        protected $user;
        protected $pwd;
        protected $port;
        protected $conn;
        protected $db;
        protected static $ins=null;
        protected $errorTxt;

        public static function getIns($h,$u,$p,$port=3306,$db){
            if (self::$ins == null) {
                # code...
                self::$ins = new self($h,$u,$p,$port=3306,$db);
            }
            return self::$ins;
        }

        protected function __construct($h,$u,$p,$port=3306,$db){
            $this->host=$h;
            $this->user=$u;
            $this->pwd=$p;
            $this->port=$port;
            $this->db=$db;

            $this->connect();
            $this->selectDb();
            $this->setChar();
        }
        //链接数据库
        public function connect(){
            $this->conn = mysql_connect($this->host,$this->user,$this->pwd,$this->port);
            if ( !$this->conn ) {
                $this->errorTxt = "数据库链接失败";
                $this->log();
            }
        }
        public function query($sql){
            try {
                $this->conn;
            } catch (Exception $e) {
                $this->errorTxt = "The false message is:".$e->getMessage();
                $this->log();
            }
            $this->errorTxt = $sql;
            $this->log();
            $rs = mysql_query($sql,$this->conn);
            if( !$rs ){
                $this->errorTxt = "The false message is: mysql_query失败";
                $this->log();
            }
            return $rs;
        }
        public function selectDb(){
            $sql = 'use '.$this->db;
            $this->query($sql);
        }
        public function setChar(){
            $sql = 'set names utf8';
            $this->query($sql);
        }
        //得到一个二维数组
        public function getAll($sql){
            $rs = $this->query($sql);
            if (!$rs) {
                # code...
                $this->errorTxt = mysql_error();
                $this->log();
                return false;
            }
            $list = array();
            while($row = mysql_fetch_array($rs)){
                $list[] = $row;
            }
            return $list;
        }
        // 得到一个一维数组
        public function getRow($sql){
            $rs = $this->query($sql);
            if (!$rs) {
                $this->errorTxt = mysql_error();
                $this->log();
                return false;
            }
            $row = mysql_fetch_assoc($rs);
            return $row;
        }
        //得到一个整型或者字符串
        public function getOne($sql){
            $rs = $this->query($sql);
            if (!$rs) {
                $this->errorTxt = mysql_error();
                $this->log();
                return false;
            }
            $one = mysql_fetch_row($rs);
            return $one[0];
        }
        //影响行数
        public function affect_rows(){
            return mysql_affected_rows($this->conn);
        }
        // 上一次插入的id
        public function last_insert_id(){
            return mysql_insert_id($this->conn);
        }
        /** 
         * 返回表中最大id号码
         * parm: table ,字段id名称
         * return int
         */
        public function maxId($table,$col_name){
            $sql = "select max($col_name) from $table";
            return $this->getOne($sql);
        }
        //日志
        public function log(){
            $filename = ROOT.'data/log/log.txt';
            if( !is_dir(dirname($filename)) ){
                mkdir(dirname($filename),0777,true);
            }
            if( filesize($filename)>=1024*1024 ){
                $this->bak($filename);
            }
            $logFile = fopen($filename, "a+") or die("Unable to open file!");
            $time=time(); 
            $txt = "时间:".date("Y-m-d H:i:s",$time)."\n".$this->errorTxt."\n";
            fwrite($logFile, $txt);
            fclose($logFile);
            // 销毁文件资源句柄变量
            unset($logFile);
        }
        /**
         * 备份日志
         * param $filename
         * return file
         */
        
        public function bak($filename){
            $newname = ROOT.'data/log/'.date('Ymdhis').'.bak';
            if(!rename($filename, $newname)){
                return $filename;
            }
            return $newname;
        }
        /**
         * number_row()
         * 返回数据库中行的数目
         * parm 
         * return Int
         */
        public function number_rows($result){
            return mysql_num_rows($result);
        }
        //自动拼接sql
        public function autoExcu($data,$table,$act='insert',$where=''){
            //return implode(',', array_keys($data));
            //return implode('\',\'', array_values($data));
            if($act == 'insert'){
                //$sql = "insert into xxtable(id,username,gender) values('3','liubei','man')";
                $sql = " insert into ";
                $sql .= $table.'(';
                $sql .= implode(',', array_keys($data));
                $sql .= ' ) values( ';
                $sql .= '\''.implode('\',\'', array_values($data)).'\')';
            }else if($act == 'update'){
                //updata xxtable set username='liubei',gender='man' where 'id=4';
                if(!$where){
                    return false;
                }
                $sql = ' update ';
                $sql .= $table;
                $sql .= ' set ';
                foreach($data as $k=>$v){
                    $sql .= $k;
                    $sql .= '=';
                    $sql .= "'$v'";
                    $sql .= ','; 
                } 
                $sql = rtrim($sql,',');
                $sql .= ' where ';
                $sql .= $where;
            }else{
                return false;
            }
            return $sql;
        }    
        
    }
 ?>

 

posted @ 2015-11-05 16:22  人间最美二月天  阅读(183)  评论(0编辑  收藏  举报