简单的MySQLDB类

  1 <?php
  2 error_reporting(E_ALL ^ E_DEPRECATED);
  3 
  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      * @param $sql string 查询类的SQL(select,show,desc)
112      *
113      * @return array 二维数组,记录的集合
114      */
115     public function fetchAll($sql){
116         //先执行
117         if(!$result = mysql_query($sql,$this->_link)){
118             //执行失败给出错误信息
119             echo '-_-!SQL执行失败<br/>';
120             echo '错误的SQL为:',$sql,'<br/>';
121             echo '错误代码为:',mysql_errno($this->_link),'<br/>';
122             echo '错误信息为:',mysql_error($this->_link);
123             die;
124         }
125         //获取数据
126         $rows = array();
127         while($row = mysql_fetch_assoc($result)){
128             $rows[] = $row;
129         }
130         //释放结果集
131         mysql_free_result($result);
132         //返回
133         return $rows;
134     }
135 
136     /**
137      * 获得一条记录
138      *
139      * @param $sql string 查询类的SQL(select,show,desc)
140      *
141      * @return array 一维数组,一条记录
142      */
143     public function fetchRow($sql){
144         //先执行
145         if(!$result = mysql_query($sql,$this->_link)){
146             //执行失败给出错误信息
147             echo '-_-!SQL执行失败<br/>';
148             echo '错误的SQL为:',$sql,'<br/>';
149             echo '错误代码为:',mysql_errno($this->_link),'<br/>';
150             echo '错误信息为:',mysql_error($this->_link);
151             die;
152         }
153         //获取数据
154         $row = mysql_fetch_assoc($result);
155         //释放结果集
156         mysql_free_result($result);
157         //返回
158         return $row;
159     }
160 
161     /**
162      * 获得一个数据
163      *
164      * @param $sql string 查询类的SQL(select,show,desc)
165      *
166      * @return string 唯一的数据 第一条记录的第一列
167      */
168     public function fetchColumn($sql){
169         //先执行
170         if(!$result = mysql_query($sql,$this->_link)){
171             //执行失败给出错误信息
172             echo '-_-!SQL执行失败<br/>';
173             echo '错误的SQL为:',$sql,'<br/>';
174             echo '错误代码为:',mysql_errno($this->_link),'<br/>';
175             echo '错误信息为:',mysql_error($this->_link);
176             die;
177         }
178         //获取数据
179         $row = mysql_fetch_row($result);
180         //释放结果集
181         mysql_free_result($result);
182         //返回
183         return $row[0];
184     }
185 
186 
187     /**
188      * 序列化时执行的方法
189      * @return array每个数组元素为一个需要被序列化的属性名
190      *
191      */
192     public function __sleep(){
193         return array('_host','_post','_user','_pass','_charset','_dbname');
194     }
195 
196     /*
197      * 反序列化时被执行
198      * 重新初始化工作
199      */
200     public function __wakeup(){
201         //连接数据库服务器
202         $this->_connect();
203         //设定连接字符集
204         $this->_setCharset();
205         //选择默认数据库
206         $this->_selectDB();
207     }
208 }

 

转载于:https://www.cnblogs.com/qzjpkfj/p/4063285.html

### 回答1: `MySQLdb` 是 Python 2.x 版本使用的 MySQL 数据库连接库,而 Python 3.x 版本则使用 `mysqlclient` 库。 如果你需要在 Python 3.x 中连接 MySQL 数据库,可以执行以下命令: ```bash pip install mysqlclient ``` 如果你仍然需要在 Python 2.x 中使用 `MySQLdb` 库,则可以执行以下命令: ```bash pip install MySQL-python ``` 需要注意的是,`MySQL-python` 库需要安装 MySQL C API,可以通过以下命令安装: ```bash sudo apt-get install python-dev libmysqlclient-dev ``` ### 回答2: pip是一个用于Python包管理的工具。而MySQLdb一个用于连接和操作MySQL数据库的Python接口。 要安装MySQLdb,可以使用以下命令: pip install MySQL-python 此命令将从Python Package Index(PyPI)下载并安装MySQLdb包。安装完成后,您可以在Python代码中使用该包来连接和操作MySQL数据库。 使用MySQLdb的第一步是导入它,可以通过以下代码完成: import MySQLdb 然后,您可以使用MySQLdb模块的函数和来执行各种数据库操作,例如连接到数据库、执行查询和修改数据等。 例如,要连接到MySQL数据库,可以使用以下代码: conn = MySQLdb.connect(host='localhost', user='username', passwd='password', db='database_name') 这个函数使用给定的主机名、用户名、密码和数据库名来建立与MySQL数据库的连接。 一旦连接成功,您可以使用conn对象上的方法执行各种数据库操作。例如,要执行一个查询,可以使用以下代码: cursor = conn.cursor() cursor.execute('SELECT * FROM table_name') result = cursor.fetchall() for row in result: print(row) 这个示例代码执行了一个简单的SELECT查询,并打印查询结果。 总之,pip是Python的包管理工具,可以使用它来安装MySQLdb,这是一个用于连接和操作MySQL数据库的Python接口。安装完毕后,您可以使用MySQLdb模块的功能来连接和执行各种数据库操作。 ### 回答3: pip是Python的一个软件包管理工具,用于安装和管理Python的第三方库。而MySQLdb一个用于Python连接和操作MySQL数据库的库。 在Python中,我们可以使用MySQLdb库来连接MySQL数据库,并执行诸如查询、插入、更新等操作。安装MySQLdb库之前,需要确保已经安装了MySQL数据库,并且Python的开发环境已经正确配置。 要安装MySQLdb库,可以使用以下命令在命令行中运行: pip install MySQL-python 运行以上命令后,pip会自动从Python Package Index(PyPI)中下载MySQLdb库,并进行安装。安装完成后,即可在Python的脚本中使用MySQLdb库。 在使用MySQLdb库之前,我们需要先导入该库,在Python脚本的开头添加以下代码: import MySQLdb 然后,我们可以使用MySQLdb库提供的函数和方法来连接数据库,并执行相应的操作。例如,可以通过以下代码连接到MySQL数据库db = MySQLdb.connect(host="localhost", user="root", passwd="password", db="database") 其中,host是数据库服务器地址,user是数据库用户名,passwd是数据库密码,db数据库名称。可以根据实际情况进行修改。 连接成功后,就可以执行各种数据库操作。例如,可以通过以下代码执行查询操作: cursor = db.cursor() cursor.execute("SELECT * FROM table") results = cursor.fetchall() for row in results: print(row) 以上代码执行了一个查询操作,将查询结果打印出来。 总之,通过pip安装MySQLdb库,可以方便地使用Python连接和操作MySQL数据库。通过正确配置连接参数,并使用MySQLdb库提供的函数和方法,我们可以轻松实现与MySQL数据库的交互。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值