php数据访问之封装类

前期我们数据访问时,需要在每个页面都新建一次数据库连接,这样做的缺陷有

1.数据访问的页面很多时我们需要在每个页面新建连接 

2.当数据库发生变化时(比如移至其他PC办公)时,需要修改数据库的连接方式,比如密码,这样后期维护的工作量会非常大。

所以我们可以引入面向对象的思想,将数据访问方法封装成一个类,然后每个使用数据库的页面就加载一下这个类,这样以后如果数据库发生改动,就可以在类中修改,有礼于后期维护和数据库功能扩展。

这里我们先定义一个DABA类(类的命名遵循驼峰命名法,即首字母大写,第一个首字母也大写  例如 DBDA.class.php)

 1 <?php
 2 class DBDA
 3 {
 4     public $host = "localhost";                //将连接的四要素定义为成员属性
 5     public $uid = "root";                        
 6     public $pwd = "123";
 7     public $dbname = "mydb";
 8     
 9     //执行SQL语句返回相应的结果
10     //$sql 要执行的SQL语句
11     //$type 代表SQL语句的类型,0代表增删改 1代表查询
12     function query($sql,$type=1)    //方法的命名也遵循驼峰命名法,第一个单词的首字母小写,往后的每个单词的首字母大写,和类命名有一点点区别
13     {
14         $db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname);
15         
16         $result = $db->query($sql);
17         
18         if($type)
19         {
20             //如果是查询,返回数据
21             return $result->fetch_all();// 这里抓取了all,会返回一个二维数组,也可以抓取row(),返回的是一维数组
22         }
23         else
24         {
25             //如果是增删改,返回true或false
26             return $result;
27         }
28     }
29 }
30 ?>

接下来就写我们的访问页面(主要看php代码部分 的变化)

 1 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 2 <title>无标题文档</title>
 3 </head>
 4 
 5 <body>
 6 <table cellpadding="0" cellspacing="0" width="100%" border="1">
 7 <tr>
 8         <th>学号</th>
 9         <th>姓名</th>
10         <th>性别</th>
11         <th>生日</th>
12         <th>班级</th>
13         <th>操作</th>
14         
15     </tr>
16 <?php
17 require "DBDA.class.php";           //加载我们定义的类
18 $db=new DBDA();                        //构建对象
19 $sql="select * from student";        //写入SQL语句
20 $attr=$db->query($sql,1);//对象调用了类里面的query方法,里面的参数$sql和$type ,其中$type不写也会默认为1(true)
21 //注意这里的$db->query($sql)不再是一个结果集了,因为在类的query方法里已经执行了fetch抓取,结果是二维数组
22foreach($attr as $v)
      { /遍历这个数组的值
23 echo "<tr align='center'> 24 <td>{$v[0]}</td> 25 <td>{$v[1]}</td> 26 <td>{$v[2]}</td> 27 <td>{$v[3]}</td> 28 <td>{$v[4]}</td> 29 <td><a href='ttttgai'>修改</a></td> 30 </tr>"; 31 }

看看效果

运行成功,这样我们就不用每个页面都写入访问连接了,只需要加载一下这个类文件,修改也方便,确实方便了很多(毕竟也是面向对象思想的优势)。

posted @ 2017-04-28 10:28  雾若晨曦  阅读(1380)  评论(0编辑  收藏  举报