zoukankan      html  css  js  c++  java
  • 建立一个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 博客随笔大多数文章均属原创,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利
  • 相关阅读:
    窗口程序及其反汇编
    PE文件结构及其加载机制(一)
    PE文件结构及其加载机制(三)
    RadAsm配置与第一个程序的编译
    另一个类型的窗口汇编程序及反汇编程序
    发现blogcn真的是做得不错!
    虚拟机学习
    这个blog的定位
    以前做的界面
    用Windows Server 2003搭建安全文件服务器 (转)
  • 原文地址:https://www.cnblogs.com/huanying2015/p/8414094.html
Copyright © 2011-2022 走看看