简单的MySQLDB类
<?php
error_reporting(E_ALL ^ E_DEPRECATED); //数据库操作类
class MySQLDB{ //属性--必要的信息
private $_host; //主机
private $_port; //端口
private $_user; //用户名
private $_pass; //密码
private $_charset;//字符集
private $_dbname; //默认数据库 //属性--运行时生成
public $_link; //mysql link 资源 private static $_instance;
public static function getInstance($params=array()){
if(!self::$_instance instanceof self){
self::$_instance = new self($params);
}
return self::$_instance;
}
private function __clone(){} /*
* 构造方法
* @param $param=array() array 关联数组 需要六个属性值
*/
private function __construct($params=array()){
//初始化属性
$this->_initParams($params);
//连接数据库服务器
$this->_connect();
//设定字符集
$this->_setCharset();
//选择默认数据
$this->_selectDB();
} /*
* 初始化数据库服务器参数
*/
private function _initParams($params){
$this->_host = isset($params['host'])?$params['host']:'127.0.0.1'; //本机
$this->_port = isset($params['port'])?$params['port']:'3306'; //
$this->_user = isset($params['user'])?$params['user']:''; //匿名用户
$this->_pass = isset($params['pass'])?$params['pass']:''; //没有密码
$this->_charset = isset($params['charset'])?$params['charset']:'utf8'; //utf8
$this->_dbname = isset($params['dbname'])?$params['dbname']:''; //表示不用选择默认数据库
} /*
* 连接数据库服务器
*/
private function _connect(){
//127.0.0.1:3306
if($link = mysql_connect("$this->_host:$this->_port",$this->_user,$this->_pass)){
//成功
$this->_link = $link;
}else{
//失败,强制脚本结束,提示错误信息
die("-_-!,连接数据库服务器失败,请确定连接选项");
}
} /*
* 设定指定字符集
*/
private function _setCharset(){
$sql = "set names $this->_charset";
if(mysql_query($sql,$this->_link)){
//成功
}else{
//执行失败给出错误信息
echo '-_-!SQL执行失败<br/>';
echo '错误的SQL为:',$sql,'<br/>';
echo '错误代码为:',mysql_errno($this->_link),'<br/>';
echo '错误信息为:',mysql_error($this->_link);
die;
}
} /*
* 选择默认数据库
* 如果没有指定,则不选择
*/
private function _selectDB(){
//判断是否需要选择默认数据库,表示不需要,防止为0
if($this->_dbname !== ''){
//不为空,才选择数据库
$sql = "use `$this->_dbname`";
if(mysql_query($sql,$this->_link)){
//成功
}else{
//执行失败给出错误信息
echo '-_-!SQL执行失败<br/>';
echo '错误的SQL为:',$sql,'<br/>';
echo '错误代码为:',mysql_errno($this->_link),'<br/>';
echo '错误信息为:',mysql_error($this->_link);
die;
}
}
} /**
* 获得全部记录
*
* @param $sql string 查询类的SQL(select,show,desc)
*
* @return array 二维数组,记录的集合
*/
public function fetchAll($sql){
//先执行
if(!$result = mysql_query($sql,$this->_link)){
//执行失败给出错误信息
echo '-_-!SQL执行失败<br/>';
echo '错误的SQL为:',$sql,'<br/>';
echo '错误代码为:',mysql_errno($this->_link),'<br/>';
echo '错误信息为:',mysql_error($this->_link);
die;
}
//获取数据
$rows = array();
while($row = mysql_fetch_assoc($result)){
$rows[] = $row;
}
//释放结果集
mysql_free_result($result);
//返回
return $rows;
} /**
* 获得一条记录
*
* @param $sql string 查询类的SQL(select,show,desc)
*
* @return array 一维数组,一条记录
*/
public function fetchRow($sql){
//先执行
if(!$result = mysql_query($sql,$this->_link)){
//执行失败给出错误信息
echo '-_-!SQL执行失败<br/>';
echo '错误的SQL为:',$sql,'<br/>';
echo '错误代码为:',mysql_errno($this->_link),'<br/>';
echo '错误信息为:',mysql_error($this->_link);
die;
}
//获取数据
$row = mysql_fetch_assoc($result);
//释放结果集
mysql_free_result($result);
//返回
return $row;
} /**
* 获得一个数据
*
* @param $sql string 查询类的SQL(select,show,desc)
*
* @return string 唯一的数据 第一条记录的第一列
*/
public function fetchColumn($sql){
//先执行
if(!$result = mysql_query($sql,$this->_link)){
//执行失败给出错误信息
echo '-_-!SQL执行失败<br/>';
echo '错误的SQL为:',$sql,'<br/>';
echo '错误代码为:',mysql_errno($this->_link),'<br/>';
echo '错误信息为:',mysql_error($this->_link);
die;
}
//获取数据
$row = mysql_fetch_row($result);
//释放结果集
mysql_free_result($result);
//返回
return $row[0];
} /**
* 序列化时执行的方法
* @return array每个数组元素为一个需要被序列化的属性名
*
*/
public function __sleep(){
return array('_host','_post','_user','_pass','_charset','_dbname');
} /*
* 反序列化时被执行
* 重新初始化工作
*/
public function __wakeup(){
//连接数据库服务器
$this->_connect();
//设定连接字符集
$this->_setCharset();
//选择默认数据库
$this->_selectDB();
}
}
简单的MySQLDB类的更多相关文章
- VC++ 一个简单的Log类
在软件开发中,为程序建立Log日志是很必要的,它可以记录程序运行的状态以及出错信息,方便维护和调试. 下面实现了一个简单的Log类,使用非常简单,仅供参考. // CLogHelper.h : hea ...
- C++ 最简单的日志类
最近搞一个 C++ 项目的二次开发,没玩过 C++,可谓步履维艰.自己写个简单的日志类都被各种坑折磨.终于搞定了. 参考了这篇博客,并且进一步简化:https://www.cnblogs.com/Ds ...
- python+selenium之自定义封装一个简单的Log类
python+selenium之自定义封装一个简单的Log类 一. 问题分析: 我们需要封装一个简单的日志类,主要有以下内容: 1. 生成的日志文件格式是 年月日时分秒.log 2. 生成的xxx.l ...
- C++定义一个简单的Computer类
/*定义一个简单的Computer类 有数据成员芯片(cpu).内存(ram).光驱(cdrom)等等, 有两个公有成员函数run.stop.cpu为CPU类的一个对象, ram为RAM类的一个对象, ...
- Python之自定义封装一个简单的Log类
参考:http://www.jb51.net/article/42626.htm 参考:http://blog.csdn.net/u011541946/article/details/70198676 ...
- js进阶 10-7 简单的伪类选择器可以干什么
js进阶 10-7 简单的伪类选择器可以干什么 一.总结 一句话总结:伪类选择器是冒号. 1.学而不用,有什么用? 多用啊,在项目中多用 2.简单的伪类选择器可以干什么? 除某元素以外,某元素的一切索 ...
- 【C/C++开发】C++实现简单的线程类
C++封装一个简单的线程类 多线程编程简介: 大家在编程时,经常需要在程序中启动一个或多个线程来处理任务,而如果每次都是去调用系统创建线程的API函数来创建,代码量虽不多,但线程的创建和业务逻辑代码就 ...
- Python+Selenium中级篇之8-Python自定义封装一个简单的Log类《转载》
Python+Selenium中级篇之8-Python自定义封装一个简单的Log类: https://blog.csdn.net/u011541946/article/details/70198676
- 043-PHP简单获得一个类对应的反射信息
<?php // 简单获得一个类对应的反射信息 class demo{ CONST CON_STR = '123456'; public $str_1; private $str_2; prot ...
随机推荐
- online ddl 跟踪
| >mysql_prepare_alter_table T@4 : | | | | | | <mysql_prepare_alter_table 7368 T@4 : | | | | | ...
- 调用AutoCAD的内置对话框
如何将CAD的内置对话框(如style命令所用的文字样式对话框)作为当前对话框的子对话框调出? 常用的几个对话框对应的函数为:1.尺寸标注样式编辑对话框:int acedEditDimstyleInt ...
- Eclipse常用快捷键集合
一.通用快捷键 [ALT+/] 此快捷键为用户编辑的神级好帮手,能为用户提供内容的辅助,不要为记不全方法和属性名称犯愁下 [Ctrl+T] 搜索当前接口的实现类 [Ctrl+O] 显示类中方法和 ...
- Starship Troopers
Problem Description You, the leader of Starship Troopers, are sent to destroy a base of the bugs. Th ...
- lisener在web.xml中设置
/* * servlet监听器开发步骤: * 1.写一个类实现XXXListener接口(6个=3个容器+3个对容器中属性进行操作) * 2.在web.xml中配置<listener> - ...
- SSIS 学习(4):变量和表达式【转】
变量,作为程序员的我们,是一个多么熟悉的概念,从开始学习编程的第一天起,就要了解什么是变量?如何定义一个变量?变量的使用范围等.现在还有必 要在这里大费口舌来讨论“变量”吗?不错,我们今天谈的变量,也 ...
- Cisco 交换机的操作
Cisco的工作模式 Cisco设备有常用模式为:用户模式.特权模式.全局模式.端口模式.首先它们之间呈现出递进关系:用户模式->特权模式->全局模式->端口模式 1.用户模式 交换 ...
- Kafka分布式消息模型
Kafka开发的主要初衷目标是构建一个用来处理海量日志,用户行为和网站运营统计等的数据处理框架.在结合了数据挖掘,行为分析,运营监控等需求的情况下,需要能够满足各种实时在线和批量离线处理应用场合对低延 ...
- hdu 4612 边连通度缩点+树的最长路径
思路:将以桥为分界的所有连通分支进行缩点,得到一颗树,求出树的直径.再用树上的点减去直径,再减一 #pragma comment(linker, "/STACK:1024000000,102 ...
- C# 文件的读取、写入和删除
class Program { static void Main(string[] args) { EmployeeDAL DAL = new EmployeeDAL(); List<Sys_E ...