單例模式 封裝PHP的mysql類

2021-08-20 06:23:38 字數 4066 閱讀 4998

<?php

/* *describe:單例模式 資料庫類

單例模式的必要條件

(1)私有的構造方法-為了防止在類外使用new關鍵字例項化物件

(2)私有的成員屬性-為了防止在類外引入這個存放物件的屬性

(3)私有的轉殖方法-為了防止在類外通過clone成生另乙個物件

(4)公有的靜態方法-為了讓使用者進行例項化物件的操作

*/header("content-type:text/html;charset=utf-8");

final

class

db mysqli_query($this->link,"set fields ".$this->charset);

return

$this->link;

}//防止轉殖

private

function

__clone

(){}

//靜態公共介面

public

static

function

getinstance

($hostfield,$userfield,$password,$datebase)

return

self::$instance;}/*

*describe:查詢單個字段

*@param $field type:string 傳入需要篩選的字段

*@param $table_name type:string 需要查詢的表名

*@param $where type:array 需要篩選的where條件

*/public

function

getfield

($field="",$table_name="",$where="") from where ";

$result = mysqli_query($this->link,$sql);

while($res = mysqli_fetch_array($result,mysql_assoc))

//若只有乙個陣列,則返回一維陣列

if(count($info)==1)else}}

/**describe:查詢單條語句

*@param $sql 查詢語句

*@param $type 返回陣列的型別

* mysql_assoc - 關聯陣列(預設)

* mysql_num - 數字陣列

* mysql_both -同時產生關聯和數字陣列

*/public

function

getrow

($sql,$type=mysql_assoc)

/**describe:查詢多條語句

*@param $sql 查詢語句

*@param $type 返回陣列的型別

* mysql_assoc - 關聯陣列(預設)

* mysql_num - 數字陣列

* mysql_both -同時產生關聯和數字陣列

*/public

function

getrows

($sql,$type=mysql_assoc)

return

$res;}/*

*describe:增加語句

*@param type:array or string $info 傳入的值

若為陣列則進行拼接sql語句,並新增 返回新增的id

若傳入的為sql語句則直接執行,返回新增的id

*@param $table_name 為需要新增的表名(可選)

*/public

function

add($info,$table_name = "")

//$fields = substr($field,0,strlen($field)-1);

//$vals = substr($val,0,strlen($val)-1);

$fields = trim($field,",");

$vals = trim($val,",");

$sql = "insert into () values ()";

if(mysqli_query($this->link,$sql))else

//判斷是否為sql語句

}else

if(is_string($info))else

}else}/*

*describe:更新

*@param type:array $info 傳入的修改的陣列

*@param type:string $table_name 需修改的表名

*@param type:array $where 修改的where條件,傳入陣列

*/public

function

update

($info,$table_name = "",$where="")`='',";

}$fields = trim($field,",");

//拼接where條件

$where_string = "";

$where_string = $this->getwhere($where);

//拼接sql

$sql = "update set where ";

echo

$sql;

die();

if(mysqli_query($this->link,$sql))else

}else}/*

*describe:刪除

*@param $where type:array 傳入需要刪除的where條件 為陣列

*@param $table_name type:string 需要刪除的表名

*/public

function

del($where,$table_name="") where ";

if(mysqli_query($this->link,$sql))else

}else}/*

*describe:執行原生sql

*@param $sql type:string 需要執行的sql

*/public

function

query

($sql)else}/*

*describe:拼接where條件

*@param $where type:array 傳入where為陣列的條件

*/private

function

getwhere

($where)` '' and ";

}}else`='' and ";}}

}return rtrim($where_string,"and ");}}

//測試 mysql類

$class = db::getinstance("localhost","root","123456","test");

$data = array(

"city_name"=>"test12222222",

"pid"=>"111111",

);$where = array(

"id"=>"438",

"city_name"=>array("like"=>"%test%"),

);//var_dump($class->query("delete from city where `city_name` like '%test%'"));

//var_dump($class->add($data,"city"));

//var_dump($class->del($where,"city"));

//var_dump($class->update($data,"city",$where));

//var_dump($class->getfield("city_name,pid","city",$where));

PHP 單例模式 封裝鏈結mysql類

describe 單例模式 資料庫類 單例模式的必要條件 1 私有的構造方法 為了防止在類外使用new關鍵字例項化物件 2 私有的成員屬性 為了防止在類外引入這個存放物件的屬性 3 私有的轉殖方法 為了防止在類外通過clone成生另乙個物件 4 公有的靜態方法 為了讓使用者進行例項化物件的操作 he...

單例模式下的mysql封裝

實現單例模式 mysql的基本操作,新增 修改 刪除 查詢 查詢多個結果集 二維陣列 查詢單個結果集 一維陣列 查詢單個資料 class mysqldb return self link 建構函式 private function construct config 禁止轉殖 private func...

PHP封裝的乙個單例模式Mysql操作類

php封裝的乙個單例模式mysql操作類 掌握滿足單例模式的必要條件 三私一公。私有的構造方法 為了防止在類外使用new關鍵字例項化物件。私有的成員屬性 為了防止在類外引入這個存放物件的屬性。私有的轉殖方法 為了防止在類外通過clone成生另乙個物件。公有的靜態方法 為了讓使用者進行例項化物件的操作...