php 单例模式的类,用单例模式来设计一个PHP数据库类

class nmdb

{

private $link;

static private $_instance;

// 连接数据库

private function __construct($host, $username, $password)

{

$this->link = mysql_connect($host, $username, $password);

$this->query("SET NAMES 'utf8'", $this->link);

//echo mysql_errno($this->link) . ": " . mysql_error($link). "n";

//var_dump($this->link);

return $this->link;

}

private function __clone(){}

public static function get_class_nmdb($host, $username, $password)

{

//$connector = new nmdb($host, $username, $password);

//return $connector;

if( FALSE == (self::$_instance instanceof self) )

{

self::$_instance = new self($host, $username, $password);

}

return self::$_instance;

}

// 连接数据表

public function select_db($database)

{

$this->result = mysql_select_db($database);

return $this->result;

}

// 执行SQL语句

public function query($query)

{

return $this->result = mysql_query($query, $this->link);

}

// 将结果集保存为数组

public function fetch_array($fetch_array)

{

return $this->result = mysql_fetch_array($fetch_array, MYSQL_ASSOC);

}

// 获得记录数目

public function num_rows($query)

{

return $this->result = mysql_num_rows($query);

}

// 关闭数据库连接

public function close()

{

return $this->result = mysql_close($this->link);

}

}

?>

这个类的使用如下:

$connector = nmdb::get_class_nmdb($host, $username, $password);

$connector -> select_db($database);

下面的类也可以参考下:

/*

* mysql 单例

*/

class mysql{

private $host ='localhost'; //数据库主机

private $user = 'root'; //数据库用户名

private $pwd = ''; //数据库用户名密码

private $database = 'imoro_imoro'; //数据库名

private $charset = 'utf8'; //数据库编码,GBK,UTF8,gb2312

private $link; //数据库连接标识;

private $rows; //查询获取的多行数组

static $_instance; //存储对象

/**

* 构造函数

* 私有

*/

private function __construct($pconnect = false) {

if (!$pconnect) {

$this->link = @ mysql_connect($this->host, $this->user, $this->pwd) or $this->err();

} else {

$this->link = @ mysql_pconnect($this->host, $this->user, $this->pwd) or $this->err();

}

mysql_select_db($this->database) or $this->err();

$this->query("SET NAMES '{$this->charset}'", $this->link);

return $this->link;

}

/**

* 防止被克隆

*

*/

private function __clone(){}

public static function getInstance($pconnect = false){

if(FALSE == (self::$_instance instanceof self)){

self::$_instance = new self($pconnect);

}

return self::$_instance;

}

/**

* 查询

*/

public function query($sql, $link = '') {

$this->result = mysql_query($sql, $this->link) or $this->err($sql);

return $this->result;

}

/**

* 单行记录

*/

public function getRow($sql, $type = MYSQL_ASSOC) {

$result = $this->query($sql);

return @ mysql_fetch_array($result, $type);

}

/**

* 多行记录

*/

public function getRows($sql, $type = MYSQL_ASSOC) {

$result = $this->query($sql);

while ($row = @ mysql_fetch_array($result, $type)) {

$this->rows[] = $row;

}

return $this->rows;

}

/**

* 错误信息输出

*/

protected function err($sql = null) {

//这里输出错误信息

echo 'error';

exit();

}

}

//用例

$db = mysql::getInstance();

$db2 = mysql::getInstance();

$data = $db->getRows('select * from blog');

//print_r($data);

//判断两个对象是否相等

if($db === $db2){

echo 'true';

}

?>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298933.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows 11 预览版 Build 22000.168 发布

微软现已发布第八个 Windows 11 预览版更新 KB5005191,版本号升级至 Build 22000.168。本次更新面向 Beta 频道和 Dev 频道的 Windows 预览体验成员推出,Windows 11 Insider Preview Build 22000.168 主要变化如下。1.微软宣布 Microsoft Teams 现已支持…

如何扩展开发团队(转)

原文标题:How To Scale a Development Team 原文链接:http://adam.heroku.com/past/2011/4/28/scaling_a_development_team/ 作者通过自己在Heroku的经验,讨论了开发团队是如何从家庭式作坊发展到专业化团队的过程,在每个阶段中都…

sqlserver全文索引问题

把噪声词定义文件清空就成了,FTData\noiseCHS.txt机制不是很明白,不过在清噪声词定义后,确实是连标点符号都能全文搜索了。 数据存储编码有问题,用nvarchar转载于:https://www.cnblogs.com/freedom831215/archive/2010/11/09/1872…

都2020年了,翟天临对毕业生论文查重的影响还剩多少?

全世界只有3.14 % 的人关注了爆炸吧知识文内有福利2020年转眼就到了4月,对于20届的毕业生来说,这注定是一个不平凡的毕业季。然而,无论2020年经历了什么,在无数莘莘学子成为“社会人”之前,不得不面对一件事情&#xf…

思科路由器由于IP INPUT进程导致cpu负荷高的判断方法

IP INPUT负荷高的原因未在端口上打开快速转发选项; 解决方法:在端口上面打开快速转发,如CEF 当同一个端口主IP和辅助IP流量大的时候,未开启相关快速转发选项; 解决方法:端口上面打开:ip route-c…

apache 2.4 httpd.conf 详解_Linux Centos服务子系统详解

1、服务的分类启动与自启动:服务启动:就是在当前系统中让服务运行,并提供功能。服务自启动:自启动是指让服务在系统开机和重启之后,随着系统的启动而自动启动服务查询已安装的服务:RPM包安装的服务[rootloc…

Oracle 常用sql场景应用(未完待续......)

--1、创建一张学生信息表stuinfo,字段包括学号、姓名、性别、年龄、入学日期SQL>CREATE TABLE stuinfo (snochar(4),sname varchar2(10),sex int,age int,sdate date);Table created--2、创建stuinfo表主键约束SQL>ALTER TABLE stuinfo ADD CONSTRAINT pk_stu…

BeetleX.FastHttpApi之JWT和自定义访问验证

BeetleX.FastHttpApi.Jwt组件是BeetleX.FastHttpApi的JWT安全验证插件,通组件的简单配置即可以实现对webapi进行安全访问控制。接下来介绍如何使用这组件并和其他自定义验证兼容。使用本示例需要引用两个组件分别是:BeetleX.FastHttpApi.Hosting和BeetleX.FastHttpA…

(收藏)C#开源资源大汇总

一、AOP框架 Encase 是C#编写开发的为.NET平台提供的AOP框架。Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式。这种部署方面(aspects)的方法帮助缺少经验的开发 人员提高开发效率。 NKalore是一款编程语言&a…

一个漫长的程序人生路程,如何突破5000元大关?几年前的2-3线城市的参考,现在未必...

我是2000年参加工作的,第一年在宁波一所大学当老师,当时工资可能只有2K不到,由于我上大学时也经常给别人兼职打工,平均下来也能赚个每个月2K,问题不严重。本来计划是在大学一边当老师,一边在市区找找活儿干…

变态公式之如何算出圆的内部被切割成几块?

来来来赶紧拿纸笔出来一起算一个单位圆圆周上均匀分布 n 个点,互相连接,这个圆的内部会被分割为多少块?答案高能预警:来,我们来找规律,大家拿出纸和笔。前三个很简单,1,2,4,所以猜测…

qq截图工具提取_QQ截图隐藏的这些简单又实用的技能,怪我没早告诉你

自从有了微信,很多人逐渐习惯并适应微信办公、学习,远离 QQ。实际上,QQ 后面做了不少实用且高效得功能,往往容易被人忽略,例如强大的截图功能,具体好用在哪呢?看完下面的内容就知道了。01. 精准…

java io类库,Java利用io类库对各种文件的操作详解

Java中文网 - Java利用io类库对各种文件的操作详解java中提供了io类库,可以轻松的用java实现对文件的各种操作。下面就来说一下如何用java来实现这些操作。新建目录//String URL request.getRequestURI();String filePath"C:\\测试\\";filePathfilePath.…

合集 | 我在传统行业做数字化转型

在过去的两年时间里,Edison加入了一家传统行业的家装企业参与了其从0到1的数字化转型的过程,我将其整个过程中的感受与体会记录成了一些文章,分享与你。1我在传统行业做数字化转型(1)预告篇这篇主要会介绍一下数字化转…

第十周项目1-程序填空与阅读(一)

问题1-阅读下面的程序,在____上填上合适的成份,使程序能够输入“12”形式的式子,并输出相应的结果。 输入switch(oper) /**Copyright (c) 2014,烟台大学计算机学院*All gight reserved.*文件名称:temp.cpp*作者:邵帅*完…

有关EnableQ在线问卷调查引擎的记者访谈记录

经过近2年来的持续努力,EnableQ已经成为在线调查问卷领域的国内领导品牌。今EnableQ核心开发团队接受记者访问,以下是访谈的部分记录。记者:当初出于什么想法要开发像EnableQ这样专业的软件产品?是因为什么契机,还是有…

33种化学原理动图, 让你秒懂化学反应原理!

全世界只有3.14 % 的人关注了爆炸吧知识化学的神奇魅力可是不是随便说说的,神奇起来让人叹为观止。下面37张动图,在带领你领略化学之美的同时,也希望能帮助你理解这些化学现象。1 . 硫氰酸汞分解(“法老之蛇”)原理&am…

sql 计算 某字段 不同值出现 的次数_教你如何合理选用和计算电线规格,电线回路分配和注意事项...

电工是装修中非常重要的隐藏工程,其涉及的每一个细节都是不容忽视的,选用电线更是责任重大,如果使用的电线配置不合理或者用劣质电线,就存在发生电气火灾的隐患。因此,根据不同场所要进行合理选择和使用。一&#xff1…

c# 计算地球上两点间距离

地球是一个近乎标准的椭球体,它的赤道半径为6378.140千米,极半径为6356.755千米,平均半径6371.004千米。如果我们假设地球是一个完美的球体,那么它的半径就是地球的平均半径,记为R。如果以0度经线为基准,那么根据地球表面任意两点的经纬度就可以计算出这两点间的地表距离。获取…

matlab自带kpca,求对矩阵进行PCA或者KPCA特征提取的matlab代码

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼这是gabor的代码imimread(G:\pictureROI\why1.jpg);A[];B[];%A,B是空矩阵,初始化,清零。scale5; % denote the scale of the gabor wavelet表示gabor小波的尺度orientation4; % denote the orientation of t…