使用單例模式實現mysql類

ydn7 9年前發布 | 3K 次閱讀 PHP

<?php defined('ACC')||exit('Access Denied'); // 封裝mysql操作類,包括連接功能,及查詢功能. class mysql extends absdb{ protected static $ins = null; protected $host; // 主機名 protected $user; // 用戶名 protected $passwd; // 密碼 protected $db; // 數據庫名 protected $port; // 端口 protected $conn = null; // 在內部操作,獲得一個對象 public static function getIns() { if(self::$ins === null) { self::$ins = new self(); } $conf = conf::getIns(); self::$ins->host = $conf->host; self::$ins->user = $conf->user; self::$ins->passwd = $conf->pwd; self::$ins->db = $conf->db; self::$ins->port = $conf->port; self::$ins->connect();
self::$ins->select_db(); self::$ins->setChar(); return self::$ins; } // 不讓外部做new操作, protected function __construct() {

}
// 連接數據庫
public function connect() {
    $this->conn = @mysql_connect($this->host,$this->user,$this->passwd,$this->port);
    if(!$this->conn) {
        $error = new Exception('數據庫連不上',9);
        throw $error;
    }
}
// 發送sql查詢
public function query($sql) {
    $rs = mysql_query($sql,$this->conn);
    if(!$rs) {
        log::write($sql);
    }
    return $rs;
}
// 封裝一個getAll方法
// 參數:$sql
// 返回: array,false
public function getAll($sql) {
    $rs = $this->query($sql);
    if(!$rs) {
        return false;
    }
    $list = array();
    while($row = mysql_fetch_assoc($rs)) {
        $list[] = $row;
    }      
    return $list;

}
// 封裝一個getRow方法
// 參數:$sql
// 返回: array,false
public function getRow($sql) {
    $rs = $this->query($sql);
    if(!$rs) {
        return false;
    }
   return mysql_fetch_assoc($rs);
}
// 封裝一個getOne方法,
// 參數: $sql
// 返回: int,str(單一的值)
public function getOne($sql) {
    $rs = $this->query($sql);
    if(!$rs) {
        return false;
    }
    $tmp = mysql_fetch_row($rs);
    return $tmp[0];
}
// 封裝一個afftect_rows()方法
// 參數:無
// 返回 int 受影響行數
public function affected_rows() {
    return mysql_affected_rows($this->conn);
}
// 返回最新生成的auto_increment列的值
public function last_id() {
    return mysql_insert_id($this->conn);
}
// 選庫函數
public function select_db() {
    $sql = 'use ' . $this->db;
    return $this->query($sql);
}
// 設置字符集的函數
public function setChar() {
    $sql = 'set names utf8';
    return $this->query($sql);
}
// 自動生成insert語句,update語句并執行
public function autoExecute($data,$table,$act='insert',$where='') {

    if($act == 'insert') {
        $sql = 'insert into ' . $table . ' (';
        $sql .= implode(',',(array_keys($data)));
        $sql .= ') values (\'';
        $sql .= implode("','",array_values($data));
        $sql .= "')";
    } else if($act == 'update') {
        if(!trim($where)) {
            return false;
        }

        $sql = 'update ' . $table . ' set ';
        foreach($data as $k=>$v) {
            $sql .= $k;
            $sql .= '=';
            $sql .= "'".$v."',";
        }

        $sql = substr($sql,0,-1);
        $sql .= ' where ';
        $sql .= $where;
    } else {
        return false;
    }
    //return $sql;
    return $this->query($sql);

}

} </pre>

 本文由用戶 ydn7 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!