php单利模式连接数据库 php语言设计模式之单例模式

php pdo单例模式怎么同时连接两个数据库

PHP pdo单例模式连接数据库

成都创新互联专业为企业提供交城网站建设、交城做网站、交城网站设计、交城网站制作等企业网站建设、网页设计与制作、交城企业网站模板建站服务,十余年交城做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

';

if ( self::$pdo == null )

{

$host = '115.29.223.160';

$user = 'zhangwei';

$pwd = 'zhang111';

$dbname = 'wangzhan';

$dsn = "mysql:host=$host;dbname=$dbname;port=3306";

$pdo = new PDO ( $dsn, $user, $pwd );

$pdo-query('set names utf8;');

$pdo-setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

$pdo-setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

self::$pdo = $pdo;

}

return self::$pdo;

}

public static function getStmt ( $sql )

{

$pdo = self::getPdo ();

return $pdo - prepare( $sql );

}

}

$sql = "INSERT INTO testss (wef,wef1) VALUES(?,?)";

$stmt = Db::getStmt ( $sql );

$stmt = Db::getStmt ( $sql );

?

输出结果

NULL

object(PDO)#1 (0) { }

第一次null 第二次再获取就已经有了 不用重新连接了

单利模式好处就是保存变量 他是用static保存的 所以 退出函数 变量不会释放

关于这个问题,差不多就是这个样子的了,你如果不明白,可以自己去后盾瞅瞅,我这些都是在后盾上学的,有空可以去看一下,就算不喜欢也没关系啊,何乐而不为呢?

单例模式 数据库 php 怎么用

搭建好php开发环境,这个就不多讲了,能找单例模式的应该有一定的php基础

2

新建一个database.php文件存放数据库信息

?php

$db = array(

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

'user'='root',//数据库用户名

'password'='root',//数据库密码

'database'='ceshi',//数据库名

)

?

3

新建Mysql.class.php编写数据库连接类操作类添加需要的属性和构造方法

构造函数加载数据库配置文件连接数据库

?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这类有兴趣的话,可以和我一样在后盾人经常看看教材,自己多看几遍,慢慢的以后就明白了,希望能帮到你,给个采纳吧谢谢

php中连接数据库,使用单例模式遇到的问题

当然是重新连接了,你是跳转不是包含。

跳转两者之间共享值要专门的传值操作,cookie\

session\

POST/GET

\静态输出

PHP基于单例模式实现的数据库操作基类

本文实例讲述了PHP基于单例模式实现的数据库操作基类。分享给大家供大家参考,具体如下:

配置文件:

?php

$db

=

array(

'host'='localhost',

'user'='root',

'password'='',

'database'='test',

)

?

php

数据库基类:

?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;

}

/**

*

查询数据库

*/

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";

?

更多关于PHP操作数据库相关内容感兴趣的读者可查看本站专题:《php+mysql数据库操作入门教程》、《PHP基于pdo操作数据库技巧总结》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

PHP设计模式之单例模式

单例模式

:使得类的一个对象成为系统中的唯一实例.

PHP中使用单例模式最常见的就是数据库操作了。避免在系统中有多个连接数据库的操作,浪费系统资源的现象,就可以使用单例模式。每次对数据库操作都使用一个实例。

简单示例

class

AClass

{

//

用来存储自己实例

public

static

$instance;

//

私有化构造函数,防止外界实例化对象

private

function

__construct()

{}

//

私有化克隆函数,防止外界克隆对象

private

function

__clone()

{}

//

静态方法,单例访问统一入口

public

static

function

getInstance()

{

if

(!(self::$instance

instanceof

self)){

self::$instance

=

new

self();

}

return

self::$instance;

}

//

test

public

function

test()

{

return

"done";

}

//

私有化克隆函数,防止外界克隆对象

private

function

__clone()

{}

}

class

BClass

extends

AClass{

}

//

获取实例

$aclass

=

AClass::getInstance();

$bclass

=

BClass::getInstance();

//

调用方法

echo

$aclass-test();

对一些比较大型的应用来说,可能连接多个数据库,那么不同的数据库公用一个对象可能会产生问题,比如连接句柄的分配等,我们可以通过给$instance变成数组,通过不同的参数来控制

简单示例

class

DB

{

//

用来存储自己实例

public

static

$instance

=

array();

public

$conn;

//

私有化构造函数,防止外界实例化对象

private

function

__construct($host,

$username,

$password,

$dbname,

$port)

{

$this-conn

=

new

mysqli($host,

$username,

$password,

$dbname,

$port);

}

//

静态方法,单例访问统一入口

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);

}

//

私有化克隆函数,防止外界克隆对象

private

function

__clone()

{}

//释放资源

public

function

__destruct(){

$this-conn-close();

}

}


当前文章:php单利模式连接数据库 php语言设计模式之单例模式
分享路径:http://hbruida.cn/article/dosspje.html