1)小案例步骤一

首先:

    MysqlDB类:

          作用:

              里面存的是mysql的操作函数,都是封装好的。

          疑问点:

              需要辨析的两个变量,就是$link是一个选好了数据库的MysqlDB对象,那个$recoure是一个只是连接了数据库的对象

    Model类:

          作用:

              其实也是操作数据库的,只不过它是基础的功能,就是取得MysqlDB类的实例化对象_dao    ,并且在实例化Model时就产生了_dao对象,因为在_construct

          疑问点:

              所有的model类都是继承这个Model类,所以都可以使用_dao类, $this->_dao->MysqlDB里面的方法

                                                                               比如:$this->_dao->getAll($config);

    zixun.controller类:

          作用:

              就是调控zixun.model.class.php文件和对应的HTML文件。

          注意点:

              在类的结束后,要将这个类实例化,才会得到你要的结果。

首先是文件关系:

框架关系展示:

          

代码展示:

(1)首先是zixun.controller.class.php

 1 <?php
 2 //header(‘Content-type:text/html;charset=utf8‘);
 3     /**
 4      * Created by PhpStorm.
 5      * User: Interact
 6      * Date: 2017/8/19
 7      * Time: 18:37
 8      */
 9     class zixun{
10     public static function  show(){
11         require ‘zixun.model.class.php‘;
12         $zixunModel=new zixunModel();
13         $records=$zixunModel->getall();
14 //       var_dump($records);
15         require ‘html/show.html‘;
16
17     }
18     }
19 zixun::show();

(2)zixun.model.class.php代码展示:

 1 <?php
 2     /**
 3      * Created by PhpStorm.
 4      * User: Interact
 5      * Date: 2017/8/19
 6      * Time: 18:37
 7      */
 8     //首先是编写一个控制器操作类
 9     /**
10      * @return array
11      */
12     require ‘Model.class.php‘;
13     class zixunModel extends Model{
14         /**
15          * @return mixed
16          */
17         public function  getall(){
18             $sql=‘select * from zixun‘;
19          return  $this->_dao->getAll($sql);
20         }
21     }
22     

(3)html代码展示:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="utf-8"><!-- 编码格式是 utf-8 -->
 5     <meta http-equiv="X-UA-Compatible" content="IE=edge"><!-- 使用最新式 ie 内核渲染国内某些 所谓的 双核浏览器 或者是 直接 使用webkit去渲染-->
 6     <meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=no">
 7     <!-- 视口属性没有设置 禁用 用户缩放, 如果有需求可以添加-->
 8     <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
 9     <title>bootstrap的模板页</title>
10     <!-- Bootstrap -->
11
12 </head>
13 <body>
14 <table>
15     <tr>
16        <th>ID&nbsp&nbsp&nbsp</th>
17         <th>名字&nbsp&nbsp&nbsp</th>
18         <th>分类&nbsp&nbsp&nbsp</th>
19         <th>作者&nbsp&nbsp&nbsp</th>
20         <th>更新时间&nbsp&nbsp</th>
21         <th>浏览次数&nbsp&nbsp</th>
22         <th>发布状态&nbsp&nbsp</th>
23     </tr>
24     <?php foreach($records as $row) : ?>
25     <tr>
26         <th><?php echo $row[‘ZX_id‘]; ?></th>
27         <th><?php echo $row[‘ZX_name‘]; ?></th>
28         <th><?php echo $row[‘ZX_fenlei‘]; ?></th>
29         <th><?php echo $row[‘ZX_zuozhe‘]; ?></th>
30         <th><?php echo $row[‘gengxin_time‘]; ?></th>
31         <th><?php echo $row[‘liulan_cishu‘]; ?></th>
32         <th><?php echo $row[‘fabu_zhuangtai‘]; ?></th>
33     </tr>
34     <?php endforeach ?>
35 </table>
36 </body>
37 </html>

(4)Model代码展示:

 1 <?php
 2     /**
 3      * Created by PhpStorm.
 4      * User: Interact
 5      * Date: 2017/8/19
 6      * Time: 19:30
 7      */
 8     /*
 9      * 基础模型类
10      */
11 class Model{
12     protected $_dao;//就是数据库连接对象,可以在子类中用。
13     protected  function  _initDAO(){
14         //初始化MySQLDB
15         $config=array(‘host‘ => ‘127.0.0.1‘,    ‘port‘ => ‘3306‘, ‘username‘=>‘root‘, ‘password‘ => ‘root‘, ‘charset‘=>‘utf8‘, ‘dbname‘=>‘thkphp5‘);
16         require_once ‘MysqlDB.class.php‘;
17         $this->_dao = MysqlDB::getInstance($config);//$dao , Database Access Object 数据库操作对象(dao层)
18     }
19     /**
20      * 构造方法
21      * 为啥将上面那个方法在__construct()函数里,就是为了叫这个方法自动调用,到时候,我们得数据库连接对象就已经有了。
22      */
23     public function __construct() {
24         // 初始化DAO
25         $this->_initDAO();
26     }
27 }

(5)MysqlDB代码展示:

  1 <?php
  2     /**
  3      * Created by PhpStorm.
  4      * User: Interact
  5      * Date: 2017/8/19
  6      * Time: 19:32
  7      */
  8 class MysqlDB{
  9     public  $host;
 10     public $port;
 11     public  $username;
 12     public $passsword;
 13     public $charset;
 14     public $dbname;
 15     //数据库连接对象
 16     private static $link;//防止未接破坏这个连接对象,这个link就是MysqlDB 对象
 17     private $resourc;
 18     /*
 19      * @param $config,你的配置数组
 20      * @return 获取数据库连接对象$link,同时作为返回值
 21      */
 22     public static function getInstance($config){
 23         if(!isset(self::$link)){
 24             self::$link = new self($config);
 25             //或者是  self::$link=$this->__construct($config);
 26         }
 27         return self::$link;
 28     }
 29     //构造函数,禁止new,这样可以用工厂函数来创造类
 30     private  function  __construct($config) {
 31         $this->host=isset($config[‘host‘])?$config[‘host‘]:‘localhost‘;
 32         $this->port = isset($config[‘port‘]) ? $config[‘port‘] : ‘3306‘;
 33         $this->username = isset($config[‘username‘]) ? $config[‘username‘] : ‘root‘;
 34         $this->password = isset($config[‘password‘]) ? $config[‘password‘] : ‘‘;
 35         $this->charset = isset($config[‘charset‘]) ? $config[‘charset‘] : ‘utf8‘;
 36         $this->dbname = isset($config[‘dbname‘]) ? $config[‘dbname‘] : ‘‘;
 37         //连接数据库
 38         $this->connect();
 39         //设定连接编码
 40         //$this->setCharset($this->charset);//这个执行不了,可能新的php有了更改
 41         //选定数据库
 42         $this->selectDb($this->dbname);
 43     }
 44     //禁止克隆
 45     private function __clone(){}
 46     public function connect(){
 47         $this->resourc = mysqli_connect("$this->host", "$this->username","$this->password") or die("连接数据库失败!");
 48     }
 49
 50     public function selectDb($dbname){
 51         mysqli_select_db($this->resourc,$dbname);
 52     }
 53     /**
 54      * 功能:执行最基本(任何)sql语句
 55      * 返回:如果失败直接结束,如果成功,返回执行结果
 56      */
 57     public function query($sql){
 58         if(!$result = mysqli_query($this->resourc,$sql))
 59         {
 60             echo ("<br />执行失败。");
 61             echo "<br />失败的sql语句为:" . $sql;
 62             echo "<br />出错信息为:" . mysqli_error($this->resourc);
 63             echo "<br />错误代号为:" . mysqli_errno($this->resourc);
 64             die();
 65         }
 66         return $result;
 67     }
 68     /**
 69      * 功能:执行select语句,返回2维数组
 70      * 参数:$sql 字符串类型 select语句
 71      */
 72     public function getAll($sql){
 73         $result = $this->query($sql);
 74         $arr = array();    //空数组
 75         while( $rec = mysqli_fetch_assoc( $result )){
 76             $arr[] = $rec;//这样就形成二维数组
 77         }
 78         return $arr;
 79     }
 80     //返回一行数据(作为一维数组)
 81     public function getRow($sql){
 82         $result = $this->query($sql);
 83         //$rec = array();
 84         if( $rec2 = mysqli_fetch_assoc( $result )){//返回下标为字段名的数组
 85             //如果fetch出来有数据(也就是取得了一行数据),结果自然是数组
 86             return $rec2;
 87         }
 88         return false;
 89     }
 90     //返回一个数据(select语句的第一行第一列)
 91     //比如常见的:select count(*) as c from XXX where ...
 92     public function getOne($sql){
 93         $result = $this->query($sql);
 94         $rec = mysqli_fetch_row($result);//返回下标为数字的数组,且下标一定是0,1,2, 3.....
 95         //如果没有数据,返回false
 96         if($result === false){
 97             return false;
 98         }
 99         return $rec[0];    //该数组的第一项。
100
101     }
102 }

然后:结果展示:

          

时间: 2024-10-24 19:24:29

1)小案例步骤一的相关文章

2)小案例步骤2,添加工厂类

和上面的思路一样,只不过稍加改进的是加了工厂类,来实例化数据库对象 框图展示: 代码展示: 只是在zixun.controller.class.php                               发生了代码改动: 1 <?php 2 //header('Content-type:text/html;charset=utf8'); 3 /** 4 * Created by PhpStorm. 5 * User: Interact 6 * Date: 2017/8/19 7 * Ti

Hibernate映射多对多双向关联关系(小案例)

多对多双向关联关系(Project(工程)/Emp(员工)为案例): 步骤如下: 1.创建Project类,并需要定义集合类型的Emp属性 public class Project { //编号 private Integer pid; //名称 private String pname; //定义集合类型的Emp属性 private Set<Emp> emps=new HashSet<Emp>(); public Integer getPid() { return pid; }

十(4)iptables语法、iptables filter表小案例、iptables nat表应用

                                    iptables语法 filter表: INPUT链:作用于进入本机的包 OUTPUT链:作用于送出本机的包 FORWARD链:作用于和本机无关的包 nat表: PREROUTING链:作用是包在刚刚到达防火墙时改变包的目标地址 OUTPUT链:改变本地产生的包的目标地址 POSTROUTING链:作用是在包将离开防火墙时改变包源地址 1.查看iptables规则 iptables -nvL  (此时默认查看filter表,

8天入门docker系列 —— 第五天 使用aspnetcore小案例熟悉容器互联和docker-compose一键部署

原文:8天入门docker系列 -- 第五天 使用aspnetcore小案例熟悉容器互联和docker-compose一键部署 这一篇继续完善webnotebook,如果你读过上一篇的内容,你应该知道怎么去挂载webnotebook日志和容器的远程访问,但是这些还远不够,webnotebook 总要和一些数据库打交道吧,比如说mysql,mongodb,redis,通常情况下这些存储设备要么是以容器的方式承载,要么是由DBA在非容器环境下统一管理. 一:webnotebook连接容器redis

Eclipse使用JDBC小案例

JDBC(Java Database Connectivity:Java访问数据库的解决方案)定义一套标准接口,即访问数据库的通用API,不同数据库厂商根据各自数据的特点去实现这些接口. 第1部分 JDBC工作过程: 1)加载驱动,建立连接: 2) 创建语句对象: 3) 执行SQL语句: 4) 处理结果集: 5) 关闭连接: 第2部分 JDBC具体使用步骤: 1) 导入JDBC驱动jar: 2) 注册JDBC驱动: 参数:“驱动程序类名” Class.forName(“驱动程序类名”); 3)

VUE小案例--跑马灯效果

自学Vue课程中学到的一个小案例,跑马灯效果 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="

Windows Server之浅谈SMB以及SMB小案例分享

SMB由来 服务器消息区块(英语:Server Message Block,缩写为SMB,服务器消息区块),又称网络文件共享系统(英语:Common Internet File System,缩写为CIFS),一种应用层网络传输协议,由微软开发,主要功能是使网络上的机器能够计算机文件.打印机.串行端口和通讯等资源.它也提供经认证的进程间通信机能.它主要用在装有Microsoft Windows的机器上,在这样的机器上被称为Microsoft Windows Network. SMB版本 OS W

Thinkphp 生成订单号小案例

Thinkphp 生成订单号小案例小伙伴们在日常的商城项目开发中,都会遇到订单号生成的问题,今天呢思梦PHP就带领大家去解读一下生成订单号的问题!首先,订单号我们要明确它有有3个性质:1.唯一性 2.不可推测性 3.效率性,唯一性和不可推测性不用说了,效率性是指不能频繁的去数据库查询以避免重复.况且满足这些条件的同时订单号还要足够的短.不知道小伙伴们在日常的项目中是否也和我一样去思考过生成订单的一些小问题,可能你也会说,这些东西不用想的那么复杂,其实呢,小编也是同意大家的看法,但是殊不知我们做程

几个数据库的小案例(一):将文本文件中的信息导入数据库的表中

从文本文件添加到数据库用户表的记录(有两个文件:frmMain.cs  SqlHelper.cs  ) //FrmMain.cs//作者:Meusing System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Fo