PHP基于單例模式實(shí)現(xiàn)的mysql類(lèi)
本文實(shí)例講述了PHP基于單例模式實(shí)現(xiàn)的mysql類(lèi)。分享給大家供大家參考,具體如下:
<?php
defined('ACC')||exit('Access Denied');
// 封裝mysql操作類(lèi),包括連接功能,及查詢(xún)功能.
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查詢(xún)
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ù):無(wú)
// 返回 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)容感興趣的讀者可查看本站專(zhuān)題:《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》、《PHP基于pdo操作數(shù)據(jù)庫(kù)技巧總結(jié)》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
PHP XML Expat解析器知識(shí)點(diǎn)總結(jié)
在本文里我們給大家整理了關(guān)于PHP XML Expat解析器的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們學(xué)習(xí)下這個(gè)吧。2019-02-02
php通過(guò)array_merge()函數(shù)合并關(guān)聯(lián)和非關(guān)聯(lián)數(shù)組的方法
這篇文章主要介紹了php通過(guò)array_merge()函數(shù)合并關(guān)聯(lián)和非關(guān)聯(lián)數(shù)組的方法,涉及php中array_merge()函數(shù)操作數(shù)組合并的技巧,需要的朋友可以參考下2015-03-03
PHP針對(duì)偽靜態(tài)的注入總結(jié)【附asp與Python相關(guān)代碼】
這篇文章主要介紹了PHP針對(duì)偽靜態(tài)的注入,結(jié)合實(shí)例形式總結(jié)分析了php針對(duì)偽靜態(tài)的常見(jiàn)注入情況,并附帶asp與Python的相關(guān)操作代碼,對(duì)于php程序安全有一定借鑒價(jià)值,需要的朋友可以參考下2017-08-08
簡(jiǎn)單的移動(dòng)設(shè)備檢測(cè)PHP腳本代碼
簡(jiǎn)單的移動(dòng)設(shè)備檢測(cè)PHP腳本代碼,需要的朋友可以參考下。2011-02-02
使用bcompiler對(duì)PHP文件進(jìn)行加密的代碼
在網(wǎng)上無(wú)意間看到這個(gè)功能代碼,還沒(méi)有去試,以后有機(jī)會(huì)用到時(shí)在試一試。收藏一下。2010-08-08

