简单的MySQLDB类

  1 <?php
  2 header(‘Content-Type:text/html; charset=utf-8‘);
  3 error_reporting(E_ALL ^ E_DEPRECATED);
  4 //数据库操作类
  5 class MySQLDB{
  6
  7     //属性--必要的信息
  8     private $_host;   //主机
  9     private $_port;   //端口
 10     private $_user;   //用户名
 11     private $_pass;   //密码
 12     private $_charset;//字符集
 13     private $_dbname; //默认数据库
 14
 15     //属性--运行时生成
 16     public $_link;   //mysql link 资源
 17
 18     private static $_instance;
 19     public static function getInstance($params=array()){
 20         if(!self::$_instance instanceof self){
 21             self::$_instance = new self($params);
 22         }
 23         return self::$_instance;
 24     }
 25     private function __clone(){}
 26
 27     /*
 28      * 构造方法
 29      * @param $param=array() array 关联数组 需要六个属性值
 30      */
 31     private function __construct($params=array()){
 32         //初始化属性
 33         $this->_initParams($params);
 34         //连接数据库服务器
 35         $this->_connect();
 36         //设定字符集
 37         $this->_setCharset();
 38         //选择默认数据
 39         $this->_selectDB();
 40     }
 41
 42     /*
 43      * 初始化数据库服务器参数
 44      */
 45     private function _initParams($params){
 46         $this->_host = isset($params[‘host‘])?$params[‘host‘]:‘127.0.0.1‘;       //本机
 47         $this->_port = isset($params[‘port‘])?$params[‘port‘]:‘3306‘;            //3306
 48         $this->_user = isset($params[‘user‘])?$params[‘user‘]:‘‘;                //匿名用户
 49         $this->_pass = isset($params[‘pass‘])?$params[‘pass‘]:‘‘;                //没有密码
 50         $this->_charset = isset($params[‘charset‘])?$params[‘charset‘]:‘utf8‘;   //utf8
 51         $this->_dbname = isset($params[‘dbname‘])?$params[‘dbname‘]:‘‘;          //表示不用选择默认数据库
 52     }
 53
 54
 55     /*
 56      * 连接数据库服务器
 57      */
 58     private function _connect(){
 59         //127.0.0.1:3306
 60         if($link = mysql_connect("$this->_host:$this->_port",$this->_user,$this->_pass)){
 61             //成功
 62             $this->_link = $link;
 63         }else{
 64             //失败,强制脚本结束,提示错误信息
 65             die("-_-!,连接数据库服务器失败,请确定连接选项");
 66         }
 67     }
 68
 69     /*
 70      * 设定指定字符集
 71      */
 72     private function _setCharset(){
 73         $sql = "set names $this->_charset";
 74         if(mysql_query($sql,$this->_link)){
 75             //成功
 76         }else{
 77             //执行失败给出错误信息
 78             echo ‘-_-!SQL执行失败<br/>‘;
 79             echo ‘错误的SQL为:‘,$sql,‘<br/>‘;
 80             echo ‘错误代码为:‘,mysql_errno($this->_link),‘<br/>‘;
 81             echo ‘错误信息为:‘,mysql_error($this->_link);
 82             die;
 83         }
 84     }
 85
 86     /*
 87      * 选择默认数据库
 88      * 如果没有指定,则不选择
 89      */
 90     private function _selectDB(){
 91         //判断是否需要选择默认数据库,表示不需要,防止为0
 92         if($this->_dbname !== ‘‘){
 93             //不为空,才选择数据库
 94             $sql = "use `$this->_dbname`";
 95             if(mysql_query($sql,$this->_link)){
 96                 //成功
 97             }else{
 98                 //执行失败给出错误信息
 99                 echo ‘-_-!SQL执行失败<br/>‘;
100                 echo ‘错误的SQL为:‘,$sql,‘<br/>‘;
101                 echo ‘错误代码为:‘,mysql_errno($this->_link),‘<br/>‘;
102                 echo ‘错误信息为:‘,mysql_error($this->_link);
103                 die;
104             }
105         }
106     }
107
108
109
110     /**
111      * 序列化时执行的方法
112      * @return array每个数组元素为一个需要被序列化的属性名
113      *
114      */
115     public function __sleep(){
116         return array(‘_host‘,‘_post‘,‘_user‘,‘_pass‘,‘_charset‘,‘_dbname‘);
117     }
118
119     /*
120      * 反序列化时被执行
121      * 重新初始化工作
122      */
123     public function __wakeup(){
124         //连接数据库服务器
125         $this->_connect();
126         //设定连接字符集
127         $this->_setCharset();
128         //选择默认数据库
129         $this->_selectDB();
130     }
131 }

时间: 2024-10-14 10:16:03

简单的MySQLDB类的相关文章

分享一个简单的简单的SQLHelper类

分享一个简单的简单的SQLHelper类,代码如下: 1 class SqlHelper 2 { 3 public static readonly string connstr = 4 ConfigurationManager.ConnectionStrings["dbConnStr"].ConnectionString; 5 6 public static int ExecuteNonQuery(string cmdText, 7 params SqlParameter[] para

Hibernate系列(二):简单编写HibernateUtil类来优化性能

相对于Hibernate系列(一)中的代码编写HibernateUtil类以提高程序的运行速度 首先,仍然要写一个javabean(User.java): package cn.itcast.hibernate.domain; import java.util.Date; public class User { private int id; private String name; private Date birthday; public int getId() { return id; }

MySQLDB类工具的封装

面向对象编程的过程中,经常要用到动态数据来填充静态网页,而动态数据往往来自于数据库,为了不用每此创建一个脚本都要重新打一遍连接数据库以及其它的获取资源结果集的代码,因此封装一个数据库的工具类文件就显得尤为重要了. 数据库工具类的封装,要实现的基本功能要有初始化数据库连接的信息,例如端口.主机号.字符集和数据库名等,然后就是一些常用的功能,例如查询表后获取一个多行多列,单行多列和单行单列的结果集,还有就是一个能用于查询的方法,能够完成查询并返回结果集的功能,并且人为地提示错误信息等,因为数据库采用

【ThinkingInC++】48、用标准C库中的时间函数生成简单的Time类

Cpptime.h /** * 书本:[ThinkingInC++] * 功能:用标准C库中的时间函数生成简单的Time类 * 时间:2014年9月11日07:53:56 * 作者:cutter_point */ #ifndef CPPTIME_H_INCLUDED #define CPPTIME_H_INCLUDED #include<ctime> #include<cstring> //这里ctime和cstring是不包含using namespace std;的而后面加.h

一些简单的帮助类(2)-- JavaSctipt Array Linq

在日程工作中经常会遇到这样的问题 一个JS数组 我们要找出其中 一些符合要求的类容 又或者对数组里的类容求和求平均数之类的一般的做法是循环里面的类容做判断添加到一个新的集合里 var array = []; array.push(1); array.push(2); array.push(3); array.push(4); array.push(5); array.push(6); var whereArray = []; for(var model in array) { if(model<

简单的工具类LogUtil、Toast

简单的工具类LogUtil.Toast     粘过去就可以用了 import android.content.Context; import android.util.Log; import android.widget.Toast; public class LogUtil { public static void e(String tag, String msg) { if (tag == null || msg == null) { return; } Log.e(tag, msg);

C++中简单的sting类的实现

String 在C++的学习生涯我中发现String类的功能十分强大,所以我们是很有必要模拟实现它的,况且在面试的时候模拟实现一个String类也是面试官经常会考的,但是因为外界因素的限制我们是不可能模拟的和库里的string一致的(C++库里的string功能更强大),所以今天我们只模拟实现string的基本功能-构造函数,拷贝构造函数,析构函数,赋值运算符重载,运算符+=的重载,运算符[]的重载,c_str(得到一个C风格的字符指针,可操作字符串),Size,Push_Back,Insert

简单的日志类

class LogHelper { string logFile = ""; /// <summary> /// 不带参数的构造函数 /// </summary> public LogHelper() { } /// <summary> /// 带参数的构造函数 /// </summary> /// <param name="logFile"></param> public LogHelper(

简单实现string类

简单实现string类,正确管理资源. 1.首先定义它的成员变量: private:     char* _data;//定义一个字符指针 2.实现它的构造函数: String(const char* str="") //如果定义对象时没有传参数,使用缺省构造参数构造出""字符串     :_data(new char[strlen(str)+1])    //+1表示多创建一个空间存'\0' {     strcpy(_data,str); } 3.实现拷贝构造