封装好的MySQL.class.php类
封装好的MySQL.class.php类
作用:数据库操作类
<?php
header('content-type:text/html;charset=utf-8');
class MySQLDB{
private $host; //主机地址
private $port; //端口号
private $user; //用户名
private $pass; //密码
private $dbname; //数据库名
private $charset;//字符集
private $link; //保存连接数据库资源
private static $instance = null; //单例模式中的$MySQLDB对象 /**
*@param array $config 配置文件
*/
private function __construct ($config) { // 初始化属性的值
$this->init($config);
// 连接数据库
$this->my_connect();
// 设置字符集
$this->my_charset();
// 选择数据库
$this->my_dbname();
} /**
* 只能new一次,单例模式
*@param array $config 传递给构造方法的数组参数
*/
public static function getInstacne($config) {
if (self::$instance == null) {
self::$instance = new self($config);
}
return self::$instance;
} /***
*私有化克隆魔术方法
*/
private function _clone() {} /**
*初始化
*@param array $config 传递给初始化方法的数组参数
*/
private function init($config) {
$this->host = isset($config['host'])?$config['host']:'localhost';
$this->port = isset($config['port'])?$config['port']:'3306';
$this->user = isset($config['user'])?$config['user']:'root';
$this->pass = isset($config['pass'])?$config['pass']:'';
$this->dbname = isset($config['dbname'])?$config['dbname']:'';
$this->charset = isset($config['charset'])?$config['charset']:'utf8';
} /**
*错误测试方法
*@param string $sql sql语句
*直接用途:用来增删改
*/
public function my_query($sql) {
if ($result = mysql_query($sql)) {
return $result;
}else {
echo "执行sql语句失败;<br/>";
echo "错误代码:",mysql_errno(),"<br/>";
echo "错误信息:",mysql_error(),'<br/>';
return false;
}
}
/**
*连接数据库
*/
private function my_connect() {
if ($link = mysql_connect("$this->host:$this->port",$this->user,$this->pass)) {
$this->link = $link;
}else {
echo "连接数据库失败:<br/>";
echo "错误代码:",mysql_errno(),"<br/>";
echo "错误信息:",mysql_error(),'<br/>';
return false;
}
} /**
*设置字符集
*/
private function my_charset() {
$sql = "set names $this->charset";
$this->my_query($sql);
}
/**
*选择数据库
*/
private function my_dbname() {
$sql = "use $this->dbname";
return $this->my_query($sql);
} /**
*返回多行多列的结果集,二维数组
*@param string sql语句
*@return mixed(array|false) *执行成功返回数组,失败返回false
*/
public function fetchAll($sql) {
if($result = $this->my_query($sql)) {
//返回资源结果集,遍历
$rows[] = '';
while ($row = mysql_fetch_assoc($result)) {
$rows[] = $row;
}
//结果集使用完毕,主动释放
mysql_free_result($result);
//返回二维数组
return $rows;
} else {
return false;
} } /**
* 返回一行多列的结果集,一维数组
*@param string 一条sql语句
*@return mixed(array|false) 执行成功返回数组,失败返回false
*/
public function fetchRow($sql) {
if($result = $this->my_query($sql)) {
//返回资源结果集,遍历
$row = mysql_fetch_assoc($result);
//结果集使用完毕,主动释放
mysql_free_result($result);
//返回一维数组
return $row;
} else {
return false;
}
} /**
*返回一行一列的结果集,单一值
*@param string 一条sql语句
*@return mixed(array|false) 执行成功返回数组,失败返回false
*/
public function fetchColumn($sql) {
if($result = $this->my_query($sql)) {
//返回资源结果集,提取
$row = mysql_fetch_row($result);
//结果集使用完毕,主动释放
mysql_free_result($result);
//返回单一值
return isset($row[0])?$row[0]:false;
} else {
return false;
}
} /**
*析构方法
*/
public function __destruct() {
@mysql_close($this->link);
}
/**
*__sleep 序列化对象的时候触发执行
*/
public function __sleep() {
return array('host','port','user','pass','charset','dbname') ;
} /**
*__wakeup 反序列化的时候触发执行
*初始化操作
*/ public function __wakeup() {
//初始化操作
// 连接数据库
$this->my_connect();
// 设置字符集
$this->my_charset();
// 选择数据库
$this->my_dbname();
} /**
*__set 为一个不可访问的属性赋值的时候自动触发
*@param string $name 属性名
*@param mixed $value 属性值
*/
public function __set($name,$value) {
$allow_set = array('host','port','user','pass','dbname','charset');
if(in_array($name,$allow_set)) {
//当前属性可以被赋值
$this->$name = $value;
}
} /**
*__get *获得一个不可访问的属性的值的时候自动触发
*@param string $name 属性名
*/
public function __get($name) {
$allow_get = array('host','port','user','pass','dbname','charset');
if (in_array($name,$allow_get)) {
return $this->$name;
}
} /**
*__call 访问一个不可访问的对象方法的时候触发
*@param string $name
*@param array $argument 参数列表
*/
public function __call($name, $argument) {
echo "对不起,您访问的".$name."()方法不存在!<br/>";
} /**
*__callstatic 访问一个不可访问的类方法(静态方法)的时候触发
*@param string $name
*@param array $argument 参数列表
*/
public static function __callStatic($name, $argument) {
echo "对不起,您访问的".$name."()静态方法不存在!<br/>";
} /**
*调用初始化方法
*@param array $config 配置文件数组
*/
public function get_init($config) {
$this->init($config);
} /** 调用连接数据库方法*/
public function get_my_connect() {
$this->my_connect();
} /** 调用设置字符集方法*/
public function get_my_charset() {
$this->my_charset();
} /** 调用选择数据库方法*/
public function get_my_dbname() {
$this->my_dbname();
} }
调用例子:
include './MySQLDB.class.php';
$config = [
'pass'=>'123456',
'dbname'=>'bbs'
];
$db = MySQLDB::getInstacne($config);
$db::show();
$db->hahaha(); echo "<hr/>";
封装好的MySQL.class.php类的更多相关文章
- Python封装的访问MySQL数据库的类及DEMO
# Filename:mysql_class.py # Author:Rain.Zen; Date: 2014-04-15 import MySQLdb class MyDb: '''初始化[类似于构 ...
- 一、JDBC的概述 二、通过JDBC实现对数据的CRUD操作 三、封装JDBC访问数据的工具类 四、通过JDBC实现登陆和注册 五、防止SQL注入
一.JDBC的概述###<1>概念 JDBC:java database connection ,java数据库连接技术 是java内部提供的一套操作数据库的接口(面向接口编程),实现对数 ...
- 封装:PDO与MySQL之间的无缝切换
以下的例子是将MySQL和PDO封装好,再无缝切换: 文件目录: config.php文件: <?php return array( // 数据库配置 'DB' => array( ' ...
- MySQL数据库工具类之——DataTable批量加入MySQL数据库(Net版)
MySQL数据库工具类之——DataTable批量加入数据库(Net版),MySqlDbHelper通用类希望能对大家有用,代码如下: using MySql.Data.MySqlClient; us ...
- php : mysql数据库操作类演示
设计目标: 1,该类一实例化,就可以自动连接上mysql数据库: 2,该类可以单独去设定要使用的连接编码(set names XXX) 3,该类可以单独去设定要使用的数据库(use XXX): 4,可 ...
- php MySQL数据库操作类源代码
php MySQL数据库操作类源代码: <?php class MySQL{ private $host; //服务器地址 private $name; //登录账号 private $pwd; ...
- 自己封装的poi操作Excel工具类
自己封装的poi操作Excel工具类 在上一篇文章<使用poi读写Excel>中分享了一下poi操作Excel的简单示例,这次要分享一下我封装的一个Excel操作的工具类. 该工具类主要完 ...
- 为什么要用Hibernate框架? 把SessionFactory,Session,Transcational封装成包含crud的工具类并且处理了事务,那不是用不着spring了?
既然用Hibernate框架访问管理持久层,那为何又提到用Spring来管理以及整合Hibernate呢?把SessionFactory,Session,Transcational封装成包含crud的 ...
- 封装获取网络信息Linux—API类
封装获取网络信息Linux—API类 封装好的库: #ifndef NETINFORMATION_H #define NETINFORMATION_H #include <netdb.h> ...
随机推荐
- js 之观察者模式
观察者模式又叫发布订阅模式(Publish/Subscribe),它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生变化时就会通知所有的观察者对象,使得它们能够自 ...
- Linux中单引号与双引号区别
1. 单引号内的所有字符都保持它本身字符的意思,而不会被bash进行解释,echo -e时转义字符(\n,\t等)将被解释,如echo -e 'aa\naa'将是两行aa. 2.除了$.``(不是单引 ...
- windows 2008 安装 apache + mysql + php
下载准备 php : http://windows.php.net/downloads/releases/archives/ apache : https://www.apachehaus.com/c ...
- 【笔记】LR11中关联设置
LR中关联建议都手动进行,自动不好用,也容易出错. 在LR中我们什么要做关联:1.关联解决的是动态数据的参数化.2.关联的数据一定是服务器响应的数据.3.服务器响应过来的数据在后面的服务还要使用. 手 ...
- python基础--数据类型的常用方法2
列表及内置方法: count():查询元素的个数 clear():清空当前对象 reverse():对当前对象进行反转 sort():对当前对象中的元素进行排序 总结: 能存多个值 有序的 可变的 队 ...
- jS生成二叉树,二叉树的遍历,查找以及插入
js递归,二叉树的操作 //递归算法n次幂 function foo(n) { if (n == 1) { return 1; } else { return n * foo(n - 1); } } ...
- php的FTP操作类
class_ftp.php <?php /** * 作用:FTP操作类( 拷贝.移动.删除文件/创建目录 ) */ class class_ftp { public $off; // 返回操作状 ...
- CSS制作的32种图形效果[梯形|三角|椭圆|平行四边形|菱形|四分之一圆|旗帜]
转载链接:http://www.w3cplus.com/css/css-simple-shapes-cheat-sheet 前面在<纯CSS制作的图形效果>一文中介绍了十六种CSS画各种不 ...
- 使用pip安装pymysql
本人使用的python版本是3.6,该版本是自带有pip.可以直接通过pip工具进行安装pymysql: 第一步:找到pip.exe路径. 例如我安装的目录如下,自带的pip工具的python版本,在 ...
- 官网svn提交到代码库,但是不能同步到web目录
现象:数据库名字存在,但是数据库中表为空:svn提交代码能到svn库中,但不能同步到web目录. 原因:磁盘分区满了,导致内测服务器中数据库先删掉但没能从线上拉取回来,显示数据库中表为空: 磁盘满,导 ...