真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

單例模式封裝php數(shù)據(jù)庫,php封裝數(shù)據(jù)庫類

PHP基于單例模式實現(xiàn)的數(shù)據(jù)庫操作基類

本文實例講述了PHP基于單例模式實現(xiàn)的數(shù)據(jù)庫操作基類。分享給大家供大家參考,具體如下:

成都創(chuàng)新互聯(lián)公司專注于江北企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城開發(fā)。江北網(wǎng)站建設(shè)公司,為江北等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站設(shè)計,專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

配置文件:

?php

$db

=

array(

'host'='localhost',

'user'='root',

'password'='',

'database'='test',

)

?

php

數(shù)據(jù)庫基類:

?php

class

db

{

public

$conn;

public

static

$sql;

public

static

$instance=null;

private

function

__construct(){

require_once('db.config.php');

$this-conn

=

mysql_connect($db['host'],$db['user'],$db['password']);

if(!mysql_select_db($db['database'],$this-conn)){

echo

"失敗";

};

mysql_query('set

names

utf8',$this-conn);

}

public

static

function

getInstance(){

if(is_null(self::$instance)){

self::$instance

=

new

db;

}

return

self::$instance;

}

/**

*

查詢數(shù)據(jù)庫

*/

public

function

select($table,$condition=array(),$field

=

array()){

$where='';

if(!empty($condition)){

foreach($condition

as

$k=$v){

$where.=$k."='".$v."'

and

";

}

$where='where

'.$where

.'1=1';

}

$fieldstr

=

'';

if(!empty($field)){

foreach($field

as

$k=$v){

$fieldstr.=

$v.',';

}

$fieldstr

=

rtrim($fieldstr,',');

}else{

$fieldstr

=

'*';

}

self::$sql

=

"select

{$fieldstr}

from

{$table}

{$where}";

$result=mysql_query(self::$sql,$this-conn);

$resuleRow

=

array();

$i

=

0;

while($row=mysql_fetch_assoc($result)){

foreach($row

as

$k=$v){

$resuleRow[$i][$k]

=

$v;

}

$i++;

}

return

$resuleRow;

}

/**

*

添加一條記錄

*/

public

function

insert($table,$data){

$values

=

'';

$datas

=

'';

foreach($data

as

$k=$v){

$values.=$k.',';

$datas.="'$v'".',';

}

$values

=

rtrim($values,',');

$datas

=

rtrim($datas,',');

self::$sql

=

"INSERT

INTO

{$table}

({$values})

VALUES

({$datas})";

if(mysql_query(self::$sql)){

return

mysql_insert_id();

}else{

return

false;

};

}

/**

*

修改一條記錄

*/

public

function

update($table,$data,$condition=array()){

$where='';

if(!empty($condition)){

foreach($condition

as

$k=$v){

$where.=$k."='".$v."'

and

";

}

$where='where

'.$where

.'1=1';

}

$updatastr

=

'';

if(!empty($data)){

foreach($data

as

$k=$v){

$updatastr.=

$k."='".$v."',";

}

$updatastr

=

'set

'.rtrim($updatastr,',');

}

self::$sql

=

"update

{$table}

{$updatastr}

{$where}";

return

mysql_query(self::$sql);

}

/**

*

刪除記錄

*/

public

function

delete($table,$condition){

$where='';

if(!empty($condition)){

foreach($condition

as

$k=$v){

$where.=$k."='".$v."'

and

";

}

$where='where

'.$where

.'1=1';

}

self::$sql

=

"delete

from

{$table}

{$where}";

return

mysql_query(self::$sql);

}

public

static

function

getLastSql(){

echo

self::$sql;

}

}

$db

=

db::getInstance();

//$list

=

$db-select('demo',array('name'='tom','password'='ds'),array('name','password'));

//echo

$db-insert('demo',array('name'='腳本之家','password'='123'));

//echo

$db-update('demo',array("name"='xxx',"password"='123'),array('id'=1));

echo

$db-delete('demo',array('id'='2'));

db::getLastSql();

echo

"pre";

?

更多關(guān)于PHP操作數(shù)據(jù)庫相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php+mysql數(shù)據(jù)庫操作入門教程》、《PHP基于pdo操作數(shù)據(jù)庫技巧總結(jié)》及《php常見數(shù)據(jù)庫操作技巧匯總》

希望本文所述對大家PHP程序設(shè)計有所幫助。

PHP設(shè)計模式之單例模式

單例模式

:使得類的一個對象成為系統(tǒng)中的唯一實例.

PHP中使用單例模式最常見的就是數(shù)據(jù)庫操作了。避免在系統(tǒng)中有多個連接數(shù)據(jù)庫的操作,浪費系統(tǒng)資源的現(xiàn)象,就可以使用單例模式。每次對數(shù)據(jù)庫操作都使用一個實例。

簡單示例

class

AClass

{

//

用來存儲自己實例

public

static

$instance;

//

私有化構(gòu)造函數(shù),防止外界實例化對象

private

function

__construct()

{}

//

私有化克隆函數(shù),防止外界克隆對象

private

function

__clone()

{}

//

靜態(tài)方法,單例訪問統(tǒng)一入口

public

static

function

getInstance()

{

if

(!(self::$instance

instanceof

self)){

self::$instance

=

new

self();

}

return

self::$instance;

}

//

test

public

function

test()

{

return

"done";

}

//

私有化克隆函數(shù),防止外界克隆對象

private

function

__clone()

{}

}

class

BClass

extends

AClass{

}

//

獲取實例

$aclass

=

AClass::getInstance();

$bclass

=

BClass::getInstance();

//

調(diào)用方法

echo

$aclass-test();

對一些比較大型的應(yīng)用來說,可能連接多個數(shù)據(jù)庫,那么不同的數(shù)據(jù)庫公用一個對象可能會產(chǎn)生問題,比如連接句柄的分配等,我們可以通過給$instance變成數(shù)組,通過不同的參數(shù)來控制

簡單示例

class

DB

{

//

用來存儲自己實例

public

static

$instance

=

array();

public

$conn;

//

私有化構(gòu)造函數(shù),防止外界實例化對象

private

function

__construct($host,

$username,

$password,

$dbname,

$port)

{

$this-conn

=

new

mysqli($host,

$username,

$password,

$dbname,

$port);

}

//

靜態(tài)方法,單例訪問統(tǒng)一入口

public

static

function

getInstance($host,

$username,

$password,

$dbname,

$port)

{

$key

=

$host.":".$port;

if

(!(self::$instance[$key]

instanceof

self)){

self::$instance[$key]

=

new

self($host,

$username,

$password,

$dbname,

$port);#實例化

}

return

self::$instance[$key];

}

//query

public

function

query($ql)

{

return

$this-conn-query($sql);

}

//

私有化克隆函數(shù),防止外界克隆對象

private

function

__clone()

{}

//釋放資源

public

function

__destruct(){

$this-conn-close();

}

}

單例模式 數(shù)據(jù)庫 php 怎么用

搭建好php開發(fā)環(huán)境,這個就不多講了,能找單例模式的應(yīng)該有一定的php基礎(chǔ)

2

新建一個database.php文件存放數(shù)據(jù)庫信息

?php

$db = array(

'host'='localhost',//地址

'user'='root',//數(shù)據(jù)庫用戶名

'password'='root',//數(shù)據(jù)庫密碼

'database'='ceshi',//數(shù)據(jù)庫名

)

?

3

新建Mysql.class.php編寫數(shù)據(jù)庫連接類操作類添加需要的屬性和構(gòu)造方法

構(gòu)造函數(shù)加載數(shù)據(jù)庫配置文件連接數(shù)據(jù)庫

?php

class db {

public $conn;

public static $sql;

public static $instance=null;

private function __construct(){

require_once('database.php');

$this-conn = mysqli_connect($db['host'],$db['user'],$db['password']);

if(!mysqli_select_db($this-conn,$db['database'])){

echo "失敗";

};

mysqli_query($this-conn,'set names utf8');

}

}

?這樣試試吧如果你對php這類有興趣的話,可以和我一樣在后盾人經(jīng)??纯唇滩?,自己多看幾遍,慢慢的以后就明白了,希望能幫到你,給個采納吧謝謝


分享文章:單例模式封裝php數(shù)據(jù)庫,php封裝數(shù)據(jù)庫類
地址分享:http://weahome.cn/article/hospoe.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部