操作mysql model

****************

<?php
    define(‘HOST‘,‘localhost‘);
    define(‘USER‘,‘root‘);
    define(‘PWD‘,‘root‘);
    define(‘DBNAME‘,‘db59‘);

class Model {
    protected $link;//数据库连接资源
    protected $tabName;//表名
    protected $where=null;//条件
    protected $limit=null;//限制
    protected $orderBy=null;//排序
    protected $fields=array();//字段信息
    protected $pk;//主键的名称
    protected $sql;//sql语句

        function __construct($tabName){
            $this->link=mysql_connect(HOST,USER,PWD,true);
            mysql_select_db(DBNAME,$this->link);
            mysql_query(‘set names utf8‘);
            $this->tabName=$tabName;
            //获取表中的所有字段,放置在成员属性 fields中
            $this->getFields();
        }
        /**
         * 获取字段信息,以数组的形式写入到成员属性fields中
         * 获取主键的名称,写入到成员属性pk中
         *
         * */
        function getFields(){
            $sql="desc $this->tabName";
            $result=mysql_query($sql);
            if($result && mysql_num_rows($result)>0){
                while($arr=mysql_fetch_assoc($result)){
                    //print_r($arr);
                    //echo "<hr/>";
                    $this->fields[]=$arr[‘Field‘];
                    if($arr[‘Key‘]==‘PRI‘){
                        $this->pk=$arr[‘Field‘];
                    }
                }
            }
            //print_r($this->fields);
            //exit;
        }

        /*
         * select查询获取多条语句
         * @return array 查询的数据的数组
         *
         * */
    /*
     * find 单条数据
     * max 获取最大值
     * min 获取最小值
     * avg 获取平均数
     * sum 获取和
     *
     * */

    function select(){
            $data=array();
            $this->sql="select * from {$this->tabName} {$this->where} {$this->orderBy} {$this->limit}";
            $result=mysql_query($this->sql);
            if($result && mysql_num_rows($result)>0){
                while($arr=mysql_fetch_assoc($result)){
                    $data[]=$arr;
                }
            }
            $this->clearAll();
            return $data;
    }
        /**
         * 添加数据
         * @param array 要添加的数据
         * @return int 影响行数
         *
         * */
    function insert($var=array()){
        if(empty($var)){
            $var=$_POST;
        }
        $keys=‘‘;
        $values=‘‘;
        foreach($var as $k=>$v){
            if(!in_array($k,$this->fields)){
                continue;
            }
            $keys.="`{$k}`,";
            $values.="‘{$v}‘,";
        }
        $keys=rtrim($keys,‘,‘);
        $values=rtrim($values,‘,‘);
        $this->sql="insert into {$this->tabName}({$keys}) values({$values})";
        $result=mysql_query($this->sql);
        if($result){
            return mysql_affected_rows();
        }else{
            return 0;
        }
    }
        /**
         * 修改数据
         * @param array 要添加的数据
         * @return int 影响行数
         *
         * 如 array(‘name‘=>‘abc‘,‘sex‘=>0,‘password‘=>‘123‘,‘id‘=>10);
         *           `name`=‘abc‘,`sex`=‘0‘,`password`=‘123‘
         * */
    function update($var=array()){
        $tmp=‘‘;
        if(empty($var)){
            $var=$_POST;
        }
        $keys=‘‘;
        $values=‘‘;
        foreach($var as $k=>$v){
            if(!in_array($k,$this->fields) || $k==$this->pk){ //过滤掉非法字段以及主键
                continue;
            }
            $tmp.="`{$k}`=‘{$v}‘,";
        }
        $tmp=rtrim($tmp,‘,‘);
        //$this->sql="insert into {$this->tabName}({$keys}) values({$values})";
        $this->sql="update {$this->tabName} set {$tmp} where {$this->pk}={$var[$this->pk]}";
        $result=mysql_query($this->sql);
        if($result){
            return mysql_affected_rows();
        }else{
            return 0;
        }
    }

    /**
     * 删除方法
     * @param int id号
     * @return int 影响行数
     *
     * */
    function delete($var){
        $sql="delete from {$this->tabName} where {$this->pk}={$var}";
        $result=mysql_query($sql);
        if($result){
            return mysql_affected_rows();
        }else{
            return 0;
        }
    }

    protected function clearAll(){
            $this->where=null;
            $this->limit=null;
            $this->orderBy=null;
    }
        /**
         * 条件函数
         * 在函数中向成员属性$where传递条件的值
         * @param string $var 条件值
         * @return Model 对象
         * */
    function where($var){
            $where=‘‘;//临时变量where
            if(is_int($var)){
                $where="id={$var}";
            }elseif(is_string($var)){
                $where="{$var}";
            }elseif(is_array($var)){
                $logic=isset($var[‘_logic‘])?$var[‘_logic‘]:‘and‘;
                //array(‘name‘=>‘ztz‘,‘sex‘=>‘1‘,‘abc‘=>‘or‘)
                //"name=‘ztz‘ and sex=1"

                foreach($var as $k=>$v){
                    //判断键是否是合法的字段名称,非法的被过滤
                    //$k = ‘abc‘;
                    //$this->fields array(‘id‘,‘name‘,‘sex‘,‘password‘);
                    if(!in_array($k,$this->fields)){
                        continue;
                    }
                    $where.="{$k} = ‘{$v}‘ {$logic} ";
                }
                $where=rtrim($where," {$logic} ");
            }else{
                die(‘您在where中输入的数据不再处理范围之内,请核对代码,或者联系项目经理解决‘);
                //return $this;
            }
            $this->where="where $where";//where id >10
            return $this;
        }

        function limit($var){
            $this->limit="limit {$var}";
            return $this;
        }
        function orderBy($var){
            $this->orderBy=" order by {$var}";
            return $this;
        }
        /**
         * 获取最后一条sql语句
         * @return string $sql 返回成员属性sql语句
         *
         * */
        function getLastSql(){
            return $this->sql;
        }
    }

    $user=new Model(‘user‘);
    //where 条件可以是
    //string 可以直接用
    //int id=10
    //        "name=‘ztz‘ or sex=1" array(‘name‘=>‘ztz‘,‘sex‘=>‘1‘,‘_logic‘=>‘and‘)
    $user->update();
    $arr=$user->select();
    //$user->delete(10);

    print_r($arr);
    //echo "<hr/>";
    //$arr2=$user->select();
    //print_r($arr2);
    echo "<hr/>";
    echo $user->getLastSql();
?>

<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8">
        <title>Model.class</title>
    </head>
<body>
        <form action=‘‘ method=‘post‘>
            <input type="hidden" name="id" value="27"/>
            姓名:<input type="text" name="name"/>
            性别:<input type="radio" name="sex" value=‘1‘/>男 <input type="radio" name="sex" value=‘0‘/>女
            <input type="submit" />
        </form>
</body>
</html>
时间: 2024-09-28 16:45:33

操作mysql model的相关文章

roborframework操作mysql

roborframework操作mysql数据: 1.需安装包robotframework_databaselibrary sudo pip install -t /usr/local/lib/python2.7/site-packages/ robotframework_databaselibrary   ---指定安装在/usr/local/lib/python2.7/site-packages/(2.7.13)目录. 2.安装pymysql: sudo pip install -t /us

CentOS7下安装Mysql和Memcached 以及 使用C#操作Mysql和Memcached

我本身是学.net的,但是现在很多主流SQL和NOSQL都是部置在linux下,本着好学的精神,前段时间装了个虚拟机,在其装上CentOS64位的服务器系统,对于英文0基础,linux0基础的我来说,过程是相当痛苦的,这里我就不分享了.下面分享一下在这个系统下安装Mysql和Memcached的过程. 安装Mysql 1.Centos 7 默认已不支持mysql ,而是带有MariaDB数据库管理系统(MySQL的一个分支),若要装mysql,最好先将MariaDB卸载 rpm -qa | gr

golang gorm 操作mysql

golang 官方的那个操作mysql的有点麻烦所以就使用了gorm,下面就gorm的使用做下简单介绍 下载gorm: go get -u github.com/jinzhu/gorm 在项目中引入gorm: import ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" ) 定义db连接信息 func DbConn(MyUser, Password, Host, Db stri

django操作mysql

连接mysql 1.安装pymysql 操作指令 : pymsql: pip install pymysql 2.导入库 在项目目录下的__init__.py文件中导入pymysql模块 加入以下两行代码: import  pymysql pymysql.install_as_MySQLdb() 3.在setting中的databases中配置mysql的连接 'ENGINE': 'django.db.backends.mysql',       # 设置驱动 'NAME':库名,       

python操作mysql ------- SqlAchemy正传

本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 下载安装 pip3 install pymysql 使用操作 1.执行SQL #!/usr/bin/env python # -*- coding:utf-8 -*- import pymysql # 创建连接 conn = pymysql.connect(host='127.0.0.1

python操作mysql数据库

连接数据库 输入值 存入数据库 关闭 import string import mysql.connector conn=mysql.connector.connect(user='root',password='test',database='dalian',use_unicode=True) cursor=conn.cursor() a=raw_input('enter an id: ') b=raw_input('enter a name: ') while(a!='quit' or b!

python操作MySQL

本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 下载安装 ? 1 pip3 install pymysql 使用操作 1.执行SQL + ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #!/usr/bin/env python # -*-

php最全基础,数组,函数,超全局变量,时间,回话,文件,php操作mysql

共享一份学习php最全基础语法知识的笔记 原文链接:http://www.cnblogs.com/oscn/p/3607757.html:略有修改   http://www.cnblogs.com/ljab/p/6125995.html略有修改 1.判断php短标记<??>是否适用,查看php配置文件php.ini中的"short_open_tag = On"2.官方的标记<?php?>  , <script language="php"

pymsql与ORM--python操作MySQL之利器

pymsql 原生模块 pymsql是python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 下载安装 pip3 install pymysql 使用操作 1.执行SQL import pymysql # 创建连接,可在配置文件里写上字典,通过**dict传入 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1') # 创建游标 cursor = conn.c