案例2-1封装数据库操作类.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
案例2-1封装数据库操作类.doc

第二章 应用案例 案例2-1 封装数据库操作类 一、案例描述 考核知识点 MVC模型 练习目标 了解PHP中常用的数据库扩展 掌握封装mysql扩展数据库操作类的方法 需求分析 在MVC模型中,模型是处理数据的,而数据是存储在数据库中的,而在实际项目中,所有对数据库的直接操作,都封装到一个数据库操作类中。而PHP中常用的数据库扩展有mysql扩展、mysqli扩展、PDO扩展,其中对PDO扩展的封装在教材中已讲解,现在来封装mysql扩展数据库操作类,看其与封装PDO扩展有何区别。 设计思路(实现原理) 创建文件:MySQLDB.class.php,编写数据库默认连接信息(服务器地址、端口号、用户名、密码、字符集、默认数据库),同时编写保存连接资源的属性和保存单例实例的属性(私有、静态)。 为了方便在执行过程中,了解执行哪些SQL语句出错,编写一个属性保存执行的所有SQL语句(数组类型)。 编写私有构造方法__construct(),同时传递连接数据库的信息,在方法中实现初始化属性,连接数据库、设定字符集、选择默认数据库的功能。 编写得到单例对象的方法getInstance()。 私有化克隆,防止通过克隆方式获得数据库对象。 编写一个执行SQL语句的方法query(),并在执行SQL前记录该条SQL语句。 编写获取多行数据的方法fetchAll()、获取一行数据的方法fetchRow()和获取一列数据的方法fetchColumn()。 二、案例实现 1、创建文件:\chapter02\MySQLDB.class.php,代码如下: ?php /** * 封装mysql扩展数据库操作类 */ class MySQLDB { private $_host;//主机 private $_port;//端口 private $_user;//用户 private $_pass;//密码 private $_charset;//字符集 private $_dbname;//默认数据库 private $_link;//保存连接资源 private $_sql = array();//执行的所有SQL //单例模式 本类对象引用 private static $_instance; /** * 私有构造方法 * @param $options array 数据库连接信息 */ private function __construct($options) { //初始化属性 $this-_host = isset($options[host]) ? $options[host] : localhost; $this-_port = isset($options[port]) ? $options[port] : 3306; //默认:匿名用户 $this-_user = isset($options[user]) ? $options[user] : ; $this-_pass = isset($options[pass]) ? $options[pass] : ; $this-_charset = isset($options[charset]) ? $options[charset] : utf8; //默认:不选择默认数据库 $this-_dbname = isset($options[dbname]) ? $options[dbname] : ; //连接MySQL服务器 if ($link = mysql_connect($this-_host.:.$this-_port, $this-_user, $this-_pass)) { //连接成功 $this-_link = $link; } else { //失败 echo 数据库连接失败,请确定数据库服务器参数; return false; } //设定连接字符集 $sql = set names $this-_charset; $this-query($sql); //选择默认数据库 if ($this-_dbname !== ) {//设定了某个默认库 $sql = use `$this-_dbname`;//为数据库名增加反引号 $this-query($sql); } } /** * 得到单例对象的方法 */ public static function getInstance($options=array()) { if (! self::$_instance in

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档