数据库操作类,链式操作

<?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;
    }
}
?>

 

posted on 2014-12-21 12:57  walter371  阅读(494)  评论(0编辑  收藏  举报

导航