php数据库的类

2 篇文章 0 订阅
<?php
    header('content-type:text/html;charset=utf-8');
 
    //配置项
    define('HOST','localhost');
    define('USER','root');
    define('PASS','');
    define('CHARSET','utf8');
    define('DBNAME', 'lamp');
 
    //类的声明
    class Model{
 
        //成员属性
        private $tableName;//表明
        private $fields;//当前表的所有的字段信息
        private $pk;//主键信息
        private $where = '';//条件字符串
        private $field = '';//字段字符串
        private $limit = '';//条数限定字符串
 
 
        //构造方法
        public function __construct($tableName){
            $this->tableName = $tableName;
            //连接
            @mysql_connect(HOST,USER,PASS) or die('数据库连接失败');
            //选择数据库
            mysql_select_db(DBNAME) or die('选择数据库失败');
            //设定字符集
            mysql_set_charset(CHARSET) or die('字符集设定失败');
            //获取字段信息
            $this->getAllFields();
        }
 
        //获取表的所有字段信息
        public function getAllFields(){
            //拼接sql
            $sql = "desc ".$this->tableName;
            //发送
            $result = mysql_query($sql);
            //判断
            if($result){
                $res = array();
                $pk = "";//主键
                while($row = mysql_fetch_assoc($result)){
                    //提取主键
                    if($row['Key'] =="PRI"){
                        $pk = $row['Field'];
                    }else{//如果不是主键 压入数组
                        $res[] = $row['Field'];
                    }
                }
                //将字段信息存入属性中
                $this->fields = $res;
                $this->pk = $pk;
            }
        }
 
        // 数据添加操作
            // array('username'=>'admin','password'=>'admin');
            //                      ||
            //                      ||
            //                      \/
            // insert into user (username,password)values('admin','admin');
        public function add($arr){
            //筛选
            foreach($arr as $k=>$v){
                //检测
                if(!in_array($k, $this->fields)){
                    unset($arr[$k]);
                }
            }
 
            //获取所有的键名
            $keys = array_keys($arr);
            //拼接键名的sql指令
            $keys_sql = implode(',', $keys);
            //获取所有的键值
            $values = array_values($arr);
            //拼接键值的sql
            $values_sql = implode('","', $values);
            $values_sql = '"'.$values_sql.'"';
 
            //准备sql指令
            $sql = "insert into ".$this->tableName." (".$keys_sql.")values(".$values_sql.")";
            //执行发送
            $result = mysql_query($sql);
 
            // /处理结果
            if($result){
                return mysql_insert_id();
            }else{
                return false;
            }
        }
 
        //删除操作
        public function delete($id){
            //拼接sql
            $sql = "delete from ".$this->tableName." where ".$this->pk."=".$id;
            //发送
            $result = mysql_query($sql);
            //处理结果
            if($result){
                //返回受影响的函数
                return mysql_affected_rows();
            }else{
                return false;
            }
        }
 
        // 修改
            // array('username'=>'admin','password'=>'admin','id'=>1);
            // update user set username='admin',password="admin" where id=1;
        public function save($arr){
            //筛选
            foreach($arr as $k=>$v){
                //如果不在字段数组中
                if(!in_array($k, $this->fields)){
                    //如果键名不等于主键名
                    if($k != $this->pk){
                        unset($arr[$k]);
                    }
                }
            }
 
            $sql = "";
            $where = "";//where uid = 1;
            //拼接sql  array('username'=>'admin','password'=>'admin','uid'=>1);
            foreach($arr as $k=>$v){
                //如果是主键
                if($k == $this->pk){
                    $where = " where ".$this->pk." = ".$v;
                }else{
                    $sql .= $k."='".$v."',";
                }
            }
            $sql = rtrim($sql,',');
            //检测是否有条件
            if($where == ''){
                die('不允许没有条件的更新');
            }
            //拼接sql
            $allSql = "update ".$this->tableName." set ".$sql.$where;
 
            //执行
            $result = mysql_query($allSql);
            if($result){
                return mysql_affected_rows();
            }else{
                return false;
            }
        }
 
        //查询
            // select * from user where uid = 56
        public function find($id){
            //拼接sql
            $sql = "select * from ".$this->tableName." where ".$this->pk." = ".$id;
            //发送
            $result = mysql_query($sql);
            //判断
            if($result){
                $res = mysql_fetch_assoc($result);
                return $res;
            }else{
                return false;
            }
        }
 
        //查询多条数据
            // $user->where("id>10")->field()->limit('1,9')->select();
        public function select(){
            //检测条件
            $w = "";
            if($this->where != ''){
                $w = " where ".$this->where;
            }
            //检测字段
            $f = "";
            if($this->field != ''){
                $f = $this->field;
            }else{
                $f = '*';
            }
 
            // /检测条数限定
            $l = "";
            if($this->limit != ''){
                $l = " limit ".$this->limit;
            }
 
            //清空指令
            $this->where = '';
            $this->field = '';
            $this->limit = '';
 
 
            //拼接sql
            $sql = "select ".$f." from ".$this->tableName. $w .$l;
            // echo $sql;          
            //发送sql指令
            $result = mysql_query($sql);
            //判断
            if($result){
                $res = array();
                while($row = mysql_fetch_assoc($result)){
                    $res[] = $row;
                }
                return $res;
            }else{
                return false;
            }
        }
 
        //声明where方法
        public function where($w){
            $this->where = $w;
            return $this;
        }
 
        //声明field方法
        public function field($f){
            $this->field = $f;
            return $this;
        }
 
        //声明limit方法
        public function limit($l){
            $this->limit = $l;
            return $this;
        }
 
        //获取表条数总数
        public function count(){
            //拼接sql
            $sql = "select count(*) as total from ".$this->tableName;
            //发送
            $result = mysql_query($sql);
            //判断
            if($result){
                $res = mysql_fetch_assoc($result);
                return $res['total'];
            }else{
                return false;
            }
        }
 
 
    }
 
    //实例化对象
    // $user = new Model('user');
 
    //添加操作
    // $arr = array('username'=>'admin','password'=>'admin','a'=>100);
    // $res = $user->add($arr);
 
    //删除
    // $res = $user->delete(10000);
    // var_dump($res);
 
    //更新操作
    // $arr = array('username'=>'admin','password'=>'admin','uid'=>1,'a'=>100);
    // $user->save($arr);
 
    //查询单条数据
    // $res = $user->find(59000);
 
    //查询多条数据
    // $res = $user->where('uid>10')->field('uid,username,password')->limit(10)->select();
    // var_dump($res);
 
    // $res2 = $user->select();
    // var_dump($res2);
 
    //获取总数
    // $count = $user->count();
    // var_dump($count);
 
 
 ?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值