本文實例講述了php基于單例模式封裝mysql類。分享給大家供大家參考,具體如下:
類:
<?php
header("content-type:text/html;charset=utf-8");
//封裝一個類
/*
掌握滿足單例模式的必要條件
(1)私有的構(gòu)造方法-為了防止在類外使用new關鍵字實例化對象
(2)私有的成員屬性-為了防止在類外引入這個存放對象的屬性
(3)私有的克隆方法-為了防止在類外通過clone成生另一個對象
(4)公有的靜態(tài)方法-為了讓用戶進行實例化對象的操作
*/
class db{
//三私一共
//私有的靜態(tài)屬性
private static $dbcon=false;
//私有的構(gòu)造方法
private function __construct(){
$dbcon=@mysql_connect("localhost","root","root");
mysql_select_db("small2",$dbcon) or die("mysql_connect error");
mysql_query("set names utf8");
}
//私有的克隆方法
private function __clone(){}
//公用的靜態(tài)方法
public static function getIntance(){
if(self::$dbcon==false){
self::$dbcon=new self;
}
return self::$dbcon;
}
//打印數(shù)據(jù)
public function p($arr){
echo "<pre class="brush:php;toolbar:false">";
print_r($arr);
echo "
登錄后復制
";
??}
??public?function?v($arr){
??echo?"
";
var_dump($arr);
echo "
登錄后復制
";
??}
??//執(zhí)行語句
??public?function?query($sql){
??$query=mysql_query($sql);
???return?$query;
??}
??/**
??*?查詢某個字段
??*?@param
??*?@return?string?or?int
??*/
??public?function?getOne($sql){
???$query=$this->query($sql);
????return?mysql_result($query,0);
??}
??//獲取一行記錄,return?array?一維數(shù)組
??public?function?getRow($sql,$type="assoc"){
???$query=$this->query($sql);
???if(!in_array($type,array("assoc",'array',"row"))){
?????die("mysql_query?error");
???}
???$funcname="mysql_fetch_".$type;
???return?$funcname($query);
??}
??//獲取一條記錄,前置條件通過資源獲取一條記錄
??public?function?getFormSource($query,$type="assoc"){
??if(!in_array($type,array("assoc","array","row")))
??{
????die("mysql_query?error");
??}
??$funcname="mysql_fetch_".$type;
??return?$funcname($query);
??}
??//獲取多條數(shù)據(jù),二維數(shù)組
??public?function?getAll($sql){
???$query=$this->query($sql);
???$list=array();
???while?($r=$this->getFormSource($query))?{
????$list[]=$r;
???}
???return?$list;
??}
??//獲得最后一條記錄id
??public?function?getInsertid(){
???return?mysql_insert_id();
??}
???/**
???*?定義添加數(shù)據(jù)的方法
???*?@param?string?$table?表名
???*?@param?string?orarray?$data?[數(shù)據(jù)]
???*?@return?int?最新添加的id
???*/
???public?function?insert($table,$data){
???//遍歷數(shù)組,得到每一個字段和字段的值
???$key_str='';
???$v_str='';
???foreach($data?as?$key=>$v){
????if(empty($v)){
?????die("error");
???}
??????//$key的值是每一個字段s一個字段所對應的值
??????$key_str.=$key.',';
??????$v_str.="'$v',";
???}
???$key_str=trim($key_str,',');
???$v_str=trim($v_str,',');
???//判斷數(shù)據(jù)是否為空
???$sql="insert?into?$table?($key_str)?values?($v_str)";
???$this->query($sql);
?//返回上一次增加操做產(chǎn)生ID值
???return?mysql_insert_id();
?}
?/*
??*?刪除一條數(shù)據(jù)方法
??*?@param1?$table,?$where=array('id'=>'1')?表名?條件
??*?@return?受影響的行數(shù)
??*/
??public?function?deleteOne($table,?$where){
????if(is_array($where)){
??????foreach?($where?as?$key?=>?$val)?{
????????$condition?=?$key.'='.$val;
??????}
????}?else?{
??????$condition?=?$where;
????}
????$sql?=?"delete?from?$table?where?$condition";
????$this->query($sql);
????//返回受影響的行數(shù)
????return?mysql_affected_rows();
??}
??/*
??*?刪除多條數(shù)據(jù)方法
??*?@param1?$table,?$where?表名?條件
??*?@return?受影響的行數(shù)
??*/
??public?function?deleteAll($table,?$where){
????if(is_array($where)){
??????foreach?($where?as?$key?=>?$val)?{
????????if(is_array($val)){
??????????$condition?=?$key.'?in?('.implode(',',?$val)?.')';
????????}?else?{
??????????$condition?=?$key.?'='?.$val;
????????}
??????}
????}?else?{
??????$condition?=?$where;
????}
????$sql?=?"delete?from?$table?where?$condition";
????$this->query($sql);
????//返回受影響的行數(shù)
????return?mysql_affected_rows();
??}
?/**
??*?[修改操作description]
??*?@param?[type]?$table?[表名]
??*?@param?[type]?$data?[數(shù)據(jù)]
??*?@param?[type]?$where?[條件]
??*?@return?[type]
??*/
?public?function?update($table,$data,$where){
???//遍歷數(shù)組,得到每一個字段和字段的值
???$str='';
??foreach($data?as?$key=>$v){
???$str.="$key='$v',";
??}
??$str=rtrim($str,',');
??//修改SQL語句
??$sql="update?$table?set?$str?where?$where";
??$this->query($sql);
??//返回受影響的行數(shù)
??return?mysql_affected_rows();
?}
}
?>
測試:
//mysql測試
//$db=db::getIntance();
//var_dump($db);
/*$sql="select * from acticle";
$list=$db->getAll($sql);
$db->p($list);*/
/*$sql="select * from acticle where acticle_id=95";
$list=$db->getRow($sql);
$db->p($list);
*/
/*$sql="select title from acticle";
$list=$db->getOne($sql);
$db->p($list);*/
//$list=$db->insert("users",$_POST);
//$del=$db->deleteOne("users","id=26");
//$del=$db->deleteAll("users","id in(23,24)");
//$up=$db->update("users",$_POST,"id=27");
//$id=$db->getInsertid();
//print_R($id);
登錄后復制
希望本文所述對大家PHP程序設計有所幫助。
更多php基于單例模式封裝mysql類完整實例相關文章請關注PHP中文網(wǎng)!
立即學習“PHP免費學習筆記(深入)”;