• 建立一个php 基础类


    在些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 ?>
    http://www.cnblogs.com/huanying2015 博客随笔大多数文章均属原创,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利
  • 相关阅读:
    .NET Interop 工具集
    关于正弦波的算法
    Windows Phone 系列 本地数据存储
    Xaml cannot create an instance of “X”
    Windows Phone 系列 使用 MVVM绑定时无法获取当前值
    Windows Phone 系列 应用程序图标无法显示
    Windows Phone 系列 WPConnect无法上网的问题
    Windows Phone 系列 使用 Windows Phone 保存铃声任务
    WP7.5提交应用
    Windows Phone 系列 动态删除ObservableCollection
  • 原文地址:https://www.cnblogs.com/huanying2015/p/8414094.html
Copyright © 2020-2023  润新知