数据库操作类,链式操作

<?php
define(‘MY_DBHOST‘, ‘localhost‘);
define(‘MY_PORT‘, ‘3306‘);
define(‘MY_DBUSER‘, ‘root‘);
define(‘MY_DBPW‘, ‘123456‘);
define(‘MY_DBNAME‘, ‘test‘);
define(‘MY_DBCHARSET‘, ‘utf8‘);
define(‘MY_DBTABLEPRE‘, ‘pre_‘);
function M($table,$database=‘‘,$pre=‘‘){
    if(empty($database)){
        $db=new MYSQL(MY_DBHOST,MY_PORT,MY_DBUSER,MY_DBPW,MY_DBNAME,MY_DBTABLEPRE,MY_DBCHARSET);
    }
    else{
        $db=new MYSQL(MY_DBHOST,MY_PORT,MY_DBUSER,MY_DBPW,$database,$pre,MY_DBCHARSET);
    }
    return $db->table($table);
}
/**
 * MySQL 数据库操作工具类, 方便数据库操作.
 */
class MYSQL{

    private     $conn;
    private  $pre;
    private  $where;
    private  $limit;
    private  $order;
    private  $field;
    public function __construct($host,$port,$user,$pw,$db,$pre,$charset){
        if(!$this->conn){
            $server = $host.‘:‘.$port;
            $this->conn = mysql_connect($server, $user, $pw, true) or die(‘connect db error‘);
            $this->pre=$pre;
            mysql_select_db($db,$this->conn) or die(‘select db error‘);
            if($charset){
                mysql_query("set names " . $charset, $this->conn);
            }

        }
    }
    public function __destruct(){
        if($this->conn){
            mysql_close($this->conn);
        }
    }
    /*
        快捷找到一行记录
    */
    public function find(){
        $result=$this->query($this->sql());
        if(!$result){
            return false;
        }
        else{
            return $result[0];
        }
    }
    /*
        选择所有的资源
    */
    public function select(){

        return $this->query($this->sql());
    }
    /*
        获取某行记录的某个字段
    */
    public function getField($field){
        $this->field=$field;
        $result=$this->query($this->sql());
        if(!$result){
            return false;
        }
        return $result[0][$field];
    }
    /*
        设置某行记录的某个字段
    */
    public function setField($field,$value){
        $sql=‘update ‘.$this->table.‘ set `‘.$field.‘`=‘.‘\‘‘.$value.‘\‘ ‘.$this->where;
        $this->execute($sql);
    }
    /*
        统计
    */
    public function count(){
        $sql=‘select count(*) as ask_count from ‘.$this->table.‘ ‘.$this->where.‘ limit 0,1‘;
        $result=$this->query($sql);
        return $result[0][‘ask_count‘];
    }
    public function sum($field){
        $sql=‘select sum(‘.$field.‘) as ask_sum from ‘.$this->table.‘ ‘.$this->where;
        $result=$this->query($sql);
        return $result[0][‘ask_sum‘];
    }
    /*
    添加记录
    */
    public function add($data){
        $fields=array();
        $values=array();
        foreach($data as $k=>$v){
            $fields[]=‘`‘.$k.‘`‘;
            $values[]=‘\‘‘.$v.‘\‘‘;
        }
        $sql="insert ".$this->table.‘ (‘.implode(‘,‘,$fields).‘) values (‘.implode(‘,‘,$values).‘)‘;
        $this->execute($sql);
        return mysql_insert_id($this->conn);

    }
    /*
    更新添加记录
    */
    public function readd($data){
        $fields=array();
        $values=array();
        foreach($data as $k=>$v){
            $fields[]=‘`‘.$k.‘`‘;
            $values[]=‘\‘‘.$v.‘\‘‘;
        }
        $sql="replace into ".$this->table.‘ (‘.implode(‘,‘,$fields).‘) values (‘.implode(‘,‘,$values).‘)‘;
        $this->execute($sql);
        return mysql_insert_id($this->conn);

    }
    /*
    更新记录
    */
    public function save($data){
        $new=array();
        foreach($data as $k=>$v){
            $new[]=‘`‘.$k.‘`=\‘‘.$v.‘\‘‘;
        }
        $sql=‘update ‘.$this->table.‘ set ‘.implode(‘,‘,$new).‘ ‘.$this->where;
        $this->execute($sql);
    }
    /*
    删除记录
    */
    public function delete(){
        $sql=‘delete from ‘.$this->table.‘ ‘.$this->where;
        $this->execute($sql);
    }
    /*
        执行原生的SQL
    */
    public function query($sql){
        $result=mysql_query($sql,$this->conn);
        if($result === false){
            return false;
        }
        if(mysql_num_rows($result)==0){
            return false;
        }

        $data=array();
        while($row=mysql_fetch_assoc($result)){
            $data[]=$row;
        }
        $this->resetsql();
        return $data;
    }
    /*
        生成SQL并执行返回结果资源
    */
    public function execute($sql){
        mysql_query($sql,$this->conn);
        $this->resetsql();
    }
    /*
        设置where
    */
    public function where($map){
        $this->where=‘where ‘.$map;
        return $this;
    }
    public function error(){
        return mysql_error($this->conn);
    }
    /*
        设置order
    */
    public function order($order){
        $this->order=‘order by ‘.$order;
        return $this;
    }
    /*
        设置limit
    */
    public function limit($limit){
        if(is_numeric($limit)){
            $this->limit=‘limit 0,‘.$limit;
        }
        else{
            $this->limit=‘limit ‘.$limit;
        }
        return $this;
    }
    /*
        设置field
    */
    public function field($field){
        $this->field=$field;
        return $this;
    }
    /*
        设置table
    */
    public function table($table){
        $this->table=$this->pre.$table;
        return $this;
    }
    /*
        生成查询sql
    */
    public function sql(){
        $sql=‘select‘;
        if($this->field){
            $sql.=‘ ‘.$this->field.‘ from‘;
        }
        else{
            $sql.=‘ * from‘;
        }
        $sql.=‘ ‘.$this->table;
        if($this->where){
            $sql.=‘ ‘.$this->where;
        }
        if($this->order){
            $sql.=‘ ‘.$this->order;
        }
        if($this->limit){
            $sql.=‘ ‘.$this->limit;
        }
        //echo $sql.‘<br>‘;
        return $sql;
    }
    /*
    查询完毕以后清空
    */
    Public function resetsql(){
        $this->field=‘‘;
        $this->order=‘‘;
        $this->limit=‘‘;
        $this->where=‘‘;
    }
    /*
        解析MYSQL的返回结果
    */
    private function parseResult($result,$find=false,$reset=true){
        if(mysql_num_rows($result)==0){
            return false;
        }

        if($find){
            return mysql_fetch_assoc($result);
        }
        $data=array();
        while($row=mysql_fetch_assoc($result)){
            $data[]=$row;
        }
        if($reset){
            $this->resetsql();
        }
        return $data;
    }
}
?>
时间: 2024-10-04 22:58:56

数据库操作类,链式操作的相关文章

PHP PDO_MYSQL 链式操作 非链式操作类

<?php /* vim: set expandtab tabstop=4 shiftwidth=4: */ // +----------------------------------------------------------------------+ // | PHP version 5 | // +----------------------------------------------------------------------+ // | Copyright (c) 199

jQuery链式操作[转]

用过jQuery的朋友都知道他强大的链式操作,方便,简洁,易于理解,如下 $("has_children").click(function(){ $(this).addClass("highlight").children("a").show().end().siblings().removeClass("highlight").children("a").hide(); }); 1.jQuery的链式操作

PHP链式操作的实现--即PHP数据操作类。

所谓链式操作最简单的理解就是 操作完毕之后再返回对象$this 想必大家工作中基本都快用烂了得东西. 下面就是一个链式操作MYSQL数据库类. 最常见的链式操作 每一个方法操作之后,返回一个对象,直到最后一个方法才是执行和返回整个链式操作的结果. $model->where()->field()->limit()->select() use PDO; class CyDB extends PDO { private $config = null; public $table; //

tp5数据库——链式操作

链式操作 数据库提供的链式操作方法,可以有效的提高数据存取的代码清晰度和开发效率,并且支持所有的CURD操作. 使用也比较简单,假如我们现在要查询一个User表的满足状态为1的前10条记录,并希望按照用户的创建时间排序 ,代码如下: Db::table('think_user') ->where('status',1) ->order('create_time') ->limit(10) ->select(); 这里的where.order和limit方法就被称之为链式操作方法,除

Java实体类实现链式操作

原来是这么写bean的,单纯的使用get.set方法,再加一个toString package Model; /** * @author: Davion * @date: 2019/12/11 * @description: */ public class User { private Integer id; private String name; @Override public String toString() { return "User{" + "id="

Javascript、C#、php、asp、python 等语言的链式操作的实现

一.什么是链式操作 把需要的下一步操作的对象通过上一步操作返回回来.使完成某些功能具有持续性. 二.链式操作优点 代码更精简优雅.链式操作能大大精简代码量,多项操作一行代码一气呵成,搞定: 链式操作应用场景除了想前端jquery方面的操作dom,后端web框架,在开发orm相关的框架也是常常用到 三.各种语言的链式操作实现 以下根据简单的实现数据库查询的类似实现一些web框架的 orm.查询类的各种DEMO 1.javascript 的链式操作大家最熟悉不过了,jquery 的整个框架就是链式操

PHP链式操作输出excel(csv)

工作中经常会遇到产品运营让导出一些简单的比较规范的数据,这时候要是有一个简单的方法可以用就简单多了.下面是我的一个输出简单的excel(csv)的方法类,用到了链式操作.说到链式操作,在jquery中可能经常用到,是不是也感觉到链式操作用起来很爽,我们也在这个类中实现下链式操作. 其实链式操作很简单的,就是在前一个类方法最后返回一个该类的对象($this),提供给下一个方法调用. <?php class Array2csv{ /* *@var string $ext 扩展名 */ private

C++中的链式操作

代码编译环境:Windows7 32bits+VS2012. 1.什么是链式操作 链式操作是利用运算符进行的连续运算(操作).它的特点是在一条语句中出现两个或者两个以上相同的操作符,如连续的赋值操作.连续的输入操作.连续的输出操作.连续的相加操作等都是链式操作的样例. 链式操一定涉及到结合律的问题.比如链式操作赋值操作满足右结合律,即a=b=c被解释成a=(b=c).而链式输出操作原则满足左结合律,即cout<<a<<b被解释成(cout<<a)<<b,基本

用php实现一个简单的链式操作

最近在读<php核心技术与最佳实践>这本书,书中第一章提到用__call()方法可以实现一个简单的字符串链式操作,比如,下面这个过滤字符串然后再求长度的操作,一般要这么写: strlen(trim($str)); 那么能否实现下面这种写法呢? $str->trim()->strlen(); 下面就来试下. 链式操作,说白了其实就是链式的调用对象的方法.既然要实现字符串的链式操作,那么就要实现一个字符串类,然后对这个类的对象进行调用操作.我对字符串类的期望如下:(1)当我创建对象时,

jQuery链式操作如何返回上一级DOM

有时候我们在链式操作的时候,选择到了其他的DOM进行操作,如何再返回先前的dom呢,有一下几个方法,end(); addBack(); add(); 使用形式 $("#divFather").show().find("a").addClass("now").end().addClass("highLight") 此段代码表示由ID为divFather往下取得了a标签加上now类之后,再返回到divFather就行添加hight