PHP基于單例模式實(shí)現(xiàn)的mysql類
本文實(shí)例講述了PHP基于單例模式實(shí)現(xiàn)的mysql類。分享給大家供大家參考,具體如下:
<?php defined('ACC')||exit('Access Denied'); // 封裝mysql操作類,包括連接功能,及查詢功能. class mysql extends absdb{ protected static $ins = null; protected $host; // 主機(jī)名 protected $user; // 用戶名 protected $passwd; // 密碼 protected $db; // 數(shù)據(jù)庫(kù)名 protected $port; // 端口 protected $conn = null; // 在內(nèi)部操作,獲得一個(gè)對(duì)象 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() { } // 連接數(shù)據(jù)庫(kù) public function connect() { $this->conn = @mysql_connect($this->host,$this->user,$this->passwd,$this->port); if(!$this->conn) { $error = new Exception('數(shù)據(jù)庫(kù)連不上',9); throw $error; } } // 發(fā)送sql查詢 public function query($sql) { $rs = mysql_query($sql,$this->conn); if(!$rs) { log::write($sql); } return $rs; } // 封裝一個(gè)getAll方法 // 參數(shù):$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; } // 封裝一個(gè)getRow方法 // 參數(shù):$sql // 返回: array,false public function getRow($sql) { $rs = $this->query($sql); if(!$rs) { return false; } return mysql_fetch_assoc($rs); } // 封裝一個(gè)getOne方法, // 參數(shù): $sql // 返回: int,str(單一的值) public function getOne($sql) { $rs = $this->query($sql); if(!$rs) { return false; } $tmp = mysql_fetch_row($rs); return $tmp[0]; } // 封裝一個(gè)afftect_rows()方法 // 參數(shù):無 // 返回 int 受影響行數(shù) public function affected_rows() { return mysql_affected_rows($this->conn); } // 返回最新生成的auto_increment列的值 public function last_id() { return mysql_insert_id($this->conn); } // 選庫(kù)函數(shù) public function select_db() { $sql = 'use ' . $this->db; return $this->query($sql); } // 設(shè)置字符集的函數(shù) public function setChar() { $sql = 'set names utf8'; return $this->query($sql); } // 自動(dòng)生成insert語(yǔ)句,update語(yǔ)句并執(zhí)行 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); } }
更多關(guān)于PHP數(shù)據(jù)庫(kù)操作相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php+mysql數(shù)據(jù)庫(kù)操作入門教程》、《PHP基于pdo操作數(shù)據(jù)庫(kù)技巧總結(jié)》及《php常見數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
PHP高級(jí)對(duì)象構(gòu)建 工廠模式的使用
工廠模式包含普通工廠模式和抽象工廠模式,但是,不管是什么工廠模式,它們都是有一個(gè)作用,那就是生成對(duì)象2012-02-02PHP實(shí)現(xiàn)一個(gè)限制實(shí)例化次數(shù)的類示例
這篇文章主要介紹了PHP實(shí)現(xiàn)一個(gè)限制實(shí)例化次數(shù)的類,涉及php面向?qū)ο蟪绦蛟O(shè)計(jì)中靜態(tài)對(duì)象與靜態(tài)方法的相關(guān)使用技巧,需要的朋友可以參考下2019-09-09php下網(wǎng)站防IP攻擊代碼,超級(jí)實(shí)用
現(xiàn)在做外國(guó)網(wǎng)絡(luò),訪問量越來越高了,最近有很多不良IP不停的進(jìn)行攻擊,由于不是自己的主機(jī),所以,只能通過代碼去阻止它們。2010-10-10利用PHPExcel讀取Excel的數(shù)據(jù)和導(dǎo)出數(shù)據(jù)到Excel
本篇文章主要介紹了利用PHPExcel讀取Excel的數(shù)據(jù)和導(dǎo)出數(shù)據(jù)到Excel的相關(guān)知識(shí),具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-05-05PHP實(shí)現(xiàn)十進(jìn)制、二進(jìn)制、八進(jìn)制和十六進(jìn)制轉(zhuǎn)換相關(guān)函數(shù)用法分析
這篇文章主要介紹了PHP實(shí)現(xiàn)十進(jìn)制、二進(jìn)制、八進(jìn)制和十六進(jìn)制轉(zhuǎn)換相關(guān)函數(shù)用法,結(jié)合具體實(shí)例形式較為詳細(xì)的分析了php各種常見的進(jìn)制轉(zhuǎn)換函數(shù)功能、參數(shù)、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-04-04