在些PHP文件的时候,一般首先都是要先写一下基础类:

主要包括以下几个方面:

1.服务器的链接:包括主机,用户名,密码

2.数据库的选择:要操作哪个数据库

3.字符集的设置:设置什么样的编码

4.查询数据库:4.1 包括查询所有数据;4.2 查询某一行数据 ;4.3 查询某一列数据;

5.数据库的添加:添加一行或多行数据

6.数据库的更新:更新一行或多行数据

7.数据库的删除:删除一行或多行数据

 

开始建立一个基础类Mysql:命名为Mysql.class.php

  1 <?php 
  2     class Mysql{
  3         private $dbHost; //服务器
  4         private $dbUser; //用户名
  5         private $dbPwd;// 密码
  6         private $dbName; //数据库名称
  7         // __construct 函数是一个php魔术方法,在实例化的时候,会最先执行__construct()方法
  8         public function __construct($_dbHost,$_dbUser,$_dbPwd,$_dbName){
  9             $this->dbHost = $_dbHost;
 10             $this->dbUser = $_dbUser;
 11             $this->dbPwd = $_dbPwd;
 12             $this->dbName = $_dbName;
 13             $link = $this->connect(); // 服务器连接
 14             if($link){
 15                 $this->selectDb();     //连接成功,则选择数据库
 16                 $this->setCode();      //连接成功,则设置字符集编码
 17             }else{
 18                 die(mysql_error());    // 连接失败,则显示数据库连接失败的信息
 19             };
 20         };
 21         // mysql 语句执行方法
 22         public function query($sql){
 23             return mysql_query($sql);
 24         };
 25         // 数据库连接方法
 26         public function connect(){
 27             return mysql_connect($this->dbHost,$this->dbUser,$this->dbPwd);
 28         };
 29         // 数据库选择方法
 30         public function selectDb(){
 31             mysql_select_db($this->dbName);
 32         };
 33         // 字符集编码设置方法
 34         public function setCode(){
 35             $this->query("set names utf8");
 36         };
 37         // 获取所有数据方法
 38         public  function getAll($sql){
 39             $res = $this->query($sql); // 查询数据库出来的数据,是一个资源类型的,所以必须使用函数进行转化,
 40             // 一般有三个函数进行mysql数据库资源的数据转化:一个是 mysql_fetch_row() ,返回的是一个数字索引的数组,可以使用数字索引进行调用;
 41             // 一个是mysql_fetch_assoc() ,返回的是关联索引的数字,只能使用关联索引进行调用,关联索引就是字段的数据变字段的名称
 42             // 还有一个是mysql_fetch_array(),返回的是数字索引和关联索引组成的数组,所以可以使用数组索引进行调用,也可以使用关联索引进行调用;相当于mysql_fetch_row()和mysql_fetch_assoc()的集合
 43             $list = array(); // 这里设定一个数组,用来接收从数据库中返回的数据,
 44             // mysql_fetch_assoc()返回的是一个指针,每次只是返回一条数据,指针即指向返回的这条数据,当次条数据被返回以后,指针会指向下一条数据,当数据取完后,指针指向null
 45             // 所以此处使用while进行循环
 46             while($row = mysql_fetch_assoc($res)){
 47                 $list[] = $row ; // 当不对数组设置索引,就进行赋值的话,会自动将赋值的项添加到数组的最后面
 48                 // array_push($list,$row);  // array_push() 函数是对数组进行入栈处理,效果和 $list[] = $row 是一样的
 49             };
 50             return $list;
 51         };
 52         //获取一行数据
 53         public function getRow($sql){
 54             $res = $this->query($sql);
 55             //这里获取一行数据,不需要对数据进行数组处理,因为只有一行数据,所以可以直接返回
 56             return mysql_fetch_assoc($res);
 57         };
 58         // 获取某一列数据
 59         public function getCol($sql){
 60             $res = $this->query($sql);
 61             $row = mysql_fetch_assoc($res);
 62             return $row[0];
 63         };
 64         public function delete($sql){
 65             // 删除数据,直接执行$sql 的删除语句就行了
 66             $this->query($sql);
 67         };
 68 
 69         //插入
 70         // INSERT INTO message( title, content ) VALUES ( '星星', '小星星' );
 71         // 产品经理 ----> 痛点
 72         /*
 73             add( array(
 74                 'title' => '星星',
 75                 'content' => '小星星'
 76             ), 'message' );
 77         */
 78 
 79         // 添加(或者说插入)数据一条数据:有两个参数,一个是需要插入的表,另一个是插入的数据,因为有可能是插入一个字段,也可能是插入两个或者多个字段,
 80         // 所以使用数组来存档要插入的数据,这样,无论插入几个字段,都使用同一个方法就可以了
 81         public function add($tbName,$data){
 82             $sql = "insert into {$tbName} (";
 83             // implode() 将数组链接成字符串,explode()
 84             $sql .= implode(",",array_keys($data))."values (";
 85             // 值要使用单引号括起来
 86             $sql .= implode(",'",array_values($data))."')";
 87             return $this->query($sql);
 88         };
 89         //数据一条数据:有三个参数,一个是需要更新的表,一个是更新的数据,另一个是更新条件
 90         public function update($tbName,$data,$condition){
 91             $sql = "update {$tbName} set";
 92             foreach($data as $key => $value){
 93                 // 值$value 要使用单引号括起来
 94                 $sql .= {$key}."='".{$value}."',";
 95             }
 96             // 但是这样处理的结果:是在语句的最后面多了一个逗号,例如以下语句
 97             // UPDATE message SET title = 'hello', content = '你好',
 98             //  既然多了一个逗号,那在最后把逗号去掉就可以了,使用substr(string,start,end)函数:
 99             // 有三个参数,一个是要处理的字符串string,一个是起始位置start,一个是结束位置end   位置参数如果为负,则从右面开始算
100             $sql = substr($sql,0,-1);
101             $sql .= " ".$condition;
102             return  $this->query($sql);
103         };
104     }
105     $mysql = new Mysql("localhost","root","root","message");
106 ?>

 

写好了基础的类,就可以进行调用了

再写一个Msgmodel 类:

 1 <?php
 2     class MsgModel{
 3         public $db;
 4         public $tbName = "message";
 5         public function __construct(&$dbObj){
 6             $this->db = $dbObj;
 7         }
 8         // 添加一条Msg数据
 9         public function msgAdd($data){
10             return $this->db->add($this->tbName,$data);
11         }
12         // 添加一条Msg 所有数据
13         public function getMsgAll(){
14             $sql = "SELECT * FROM {$this->tbName} ORDER BY time DESC";
15             return $this->db->getAll($sql);
16         }
17         
18         // 获取Msg的所有条数
19         public function getMsgCol(){
20             $sql = "SELECT COUNT(*) FROM {$this->tbName}";
21             return $this->db->getCol($sql);
22         }
23         public function getMsgColBycatId($catId){
24             if($catId == 0){
25                 return $this->getMsgCol();
26             }else{
27                 $sql = "SELECT COUNT(*) FROM {$this->tbName} WHERE cat_id = {$catId}";
28                 return $this->db->getCol($sql);
29             }
30             
31         }
32         public function getMsgList($p,$pageSize){
33             $sql = "SELECT * FROM {$this->tbName} ORDER BY time DESC ";
34             $sql .= " LIMIT ".($p-1)*$pageSize.",".$pageSize;
35             
36             return $this->db->getAll($sql);
37         }
38         public function getMsgListByCatId($p,$pageSize,$catId){
39             if($catId==0){
40                 return $this->getMsgList($p,$pageSize);
41             }else{
42                 $sql = "SELECT * FROM {$this->tbName} ";
43                 $sql .="WHERE cat_id = {$catId} ORDER BY time DESC ";
44                 $sql .= " LIMIT ".($p-1)*$pageSize.",".$pageSize;
45                 return $this->db->getAll($sql);
46             }
47         }
48         public function getMsgById($msgId){
49             $sql = "SELECT * FROM {$this->tbName} WHERE message_id = $msgId";
50             return $this->db->getRow($sql);
51         }
52         public function getMsgRandId(){
53             $sql = "SELECT * FROM {$this->tbName} ORDER BY RAND() LIMIT 1";
54             $row = $this->db->getRow($sql);
55             return $row['message_id'];
56         }
57         public function getPrevMsgId($msgId){
58             $sql = "SELECT * FROM {$this->tbName} WHERE message_id < {$msgId}";
59             $sql .= " ORDER BY message_id DESC LIMIT 1";
60             $row = $this->db->getRow($sql);
61             return $row['message_id'];
62         }
63         public function getNextMsgId($msgId){
64             $sql = "SELECT * FROM {$this->tbName} WHERE message_id > {$msgId}";
65             $sql .= " ORDER BY message_id ASC LIMIT 1";
66             $row = $this->db->getRow($sql);
67             return $row['message_id'];
68         }
69         public function getMinMsgId(){
70             $sql = "SELECT * FROM {$this->tbName} ORDER BY message_id ASC LIMIT 1";
71             $row = $this->db->getRow($sql);
72             return $row['message_id'];
73         }
74         public function getMaxMsgId(){
75             $sql = "SELECT * FROM {$this->tbName} ORDER BY message_id DESC LIMIT 1";
76             $row = $this->db->getRow($sql);
77             return $row['message_id'];
78         }
79 
80     }
81 ?>

 

posted on 2018-02-05 19:34  huanying2015  阅读(170)  评论(0编辑  收藏  举报