php mysql db封装类_封装自己的DB类(PHP)
classDB{//屬性
private $host;private $port;private $user;private $pass;private $dbname;private $charset;private $prefix; //表前綴
private $link; //連接資源(連接數(shù)據(jù)庫,一般會返回一個資源,所以需要定義一個link屬性)
//構(gòu)造方法(作用:為了初始化對象的屬性),會被自動調(diào)用
/** @param1 array $arr,默認為空,里面是一個關(guān)聯(lián)數(shù)組,里面有7個元素
* array('host' => 'localhost','port' => '3306');*/
public function __construct($arr = array()){//初始化
$this->host = isset($arr['host']) ? $arr['host'] : 'localhost';//先判斷是否有自己的host,如果有就用自己的host,否則就使用默認的localhost
$this->port = isset($arr['port']) ? $arr['port'] : '3306';$this->user = isset($arr['user']) ? $arr['user'] : 'root';$this->pass = isset($arr['pass']) ? $arr['pass'] : 'root';$this->dbname = isset($arr['dbname']) ? $arr['dbname'] : 'mydatabase';$this->charset = isset($arr['charset']) ? $arr['charset'] : 'utf8';$this->prefix = isset($arr['prefix']) ? $arr['prefix'] : '';//連接數(shù)據(jù)庫(類是要操作數(shù)據(jù)庫,因此要連接數(shù)據(jù)庫)
$this->connect();//設(shè)置字符集
$this->setCharset();//選擇數(shù)據(jù)庫
$this->setDbname();
}/** 連接數(shù)據(jù)庫*/
private functionconnect(){//mysql擴展連接
$this->link = mysql_connect($this->host . ':' . $this->port,$this->user,$this->pass);//判斷結(jié)果
if(!$this->link){//結(jié)果出錯了
//暴力處理,如果是真實線上項目(生產(chǎn)環(huán)境)必須寫入到日志文件
echo '數(shù)據(jù)庫連接錯誤:
';echo '錯誤編號' . mysql_errno() . '
';echo '錯誤內(nèi)容' . mysql_error() . '
';exit;
}
}/** 設(shè)置字符集*/
private functionsetCharset(){//設(shè)置
$this->db_query("set names {$this->charset}");
}/** 選擇數(shù)據(jù)庫*/
private functionsetDbname(){$this->db_query("use {$this->dbname}");
}/** 增加數(shù)據(jù)
* @param1 string $sql,要執(zhí)行的插入語句
* @return boolean,成功返回是自動增長的ID,失敗返回FALSE*/
public function db_insert($sql){//發(fā)送數(shù)據(jù)
$this->db_query($sql);//成功返回自增ID
return mysql_affected_rows() ? mysql_insert_id() : FALSE;
}/** 刪除數(shù)據(jù)
* @param1 string $sql,要執(zhí)行的刪除語句
* @return Boolean,成功返回受影響的行數(shù),失敗返回FALSE*/
public function db_delete($sql){//發(fā)送SQL
$this->db_query($sql);//判斷結(jié)果
return mysql_affected_rows() ? mysql_affected_rows() : FALSE;
}/** 更新數(shù)據(jù)
* @param1 string $sql,要執(zhí)行的更新語句
* @return Boolean,成功返回受影響的行數(shù),失敗返回FALSE*/
public function db_update($sql){//發(fā)送SQL
$this->db_query($sql);//判斷結(jié)果
return mysql_affected_rows() ? mysql_affected_rows() : FALSE;
}/** 查詢:查詢一條記錄
* @param1 string $sql,要查詢的SQL語句
* @return mixed,成功返回一個數(shù)組,失敗返回FALSE*/
public function db_getRow($sql){//發(fā)送SQL
$res = $this->db_query($sql);//判斷返回
return mysql_num_rows($res) ? mysql_fetch_assoc($res) : FALSE;
}/** 查詢:查詢多條記錄
* @param1 string $sql,要查詢的SQL語句
* @return mixed,成功返回一個二維數(shù)組,失敗返回FALSE*/
public function db_getAll($sql){//發(fā)送SQL
$res = $this->db_query($sql);//判斷返回
if(mysql_num_rows($res)){//循環(huán)遍歷
$list = array();//遍歷
while($row = mysql_fetch_assoc($res)){$list[] = $row;
}//返回
return $list;
}//返回FALSE
return FALSE;
}/** mysql_query錯誤處理
* @param1 string $sql,需要執(zhí)行的SQL語句
* @return mixed,只要語句不出錯,全部返回*/
private function db_query($sql){//發(fā)送SQL
$res = mysql_query($sql);//判斷結(jié)果
if(!$res){//結(jié)果出錯了
//暴力處理,如果是真實線上項目(生產(chǎn)環(huán)境)必須寫入到日志文件
echo '語句出現(xiàn)錯誤:
';echo '錯誤編號' . mysql_errno() . '
';echo '錯誤內(nèi)容' . mysql_error() . '
';exit;
}//沒有錯誤
return $res;
}//__sleep方法
public function__sleep(){//返回需要保存的屬性的數(shù)組
return array('host','port','user','pass','dbname','charset','prefix');
}//__wakeup方法
public function__wakeup(){//連接資源
$this->connect();//設(shè)置字符集和選中數(shù)據(jù)庫
$this->setCharset();$this->setDbname();
}/** 獲取完整的表名*/
protected functiongetTableName(){//完整表名:前綴+表名
return $this->prefix . $this->table;
}
}//這個DB類,一般不寫析構(gòu)(不釋放資源)
總結(jié)
以上是生活随笔為你收集整理的php mysql db封装类_封装自己的DB类(PHP)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 边缘计算用java_物联网技术和边缘计算
- 下一篇: python tcl 控件_在Tkint