操作类文件

db.class.php

<?phpclass DB_API{    // 数据库表名    protected $table;     // 数据库主键    protected $primary = 'id';     // 表前缀    protected $prefix = '';     // WHERE和ORDER拼装后的条件    private $filter = array();     // PDO    private $pdo;        // PDOStatement    private $Statement;        // PDO链接数据库    public function __construct($config){        class_exists('PDO') or exit("not found PDO");                try{            $this->pdo = new PDO("mysql:host=".$config['db_host'].";port=".$config['db_port'].";dbname=".$config['db_name'],$config['db_user'], $config['db_pass']);         }catch(PDOException $e){            // 数据库无奈链接,如果您是第一次应用,请先配置数据库!            exit($e->getMessage());        }        $this->prefix = $config['db_prefix'];        $this->pdo->exec("SET NAMES UTF8");                    }    // 配置表信息    public function set_table($table=null,$primary='id'){        if($table==null){ exit('Not found Table');}                $this->primary = $primary;        $this->table = $this->prefix.$table;        return $this;    }            // 获取数据    public function getData($sql)    {        if(!$result = $this->query($sql))return array();        if(!$this->Statement->rowCount())return array();        $rows = array();        while($rows[] = $this->Statement->fetch(PDO::FETCH_ASSOC)){}        $this->Statement=null;        array_pop($rows);        return $rows;    }        // 查问数据条数    public function getCount($conditions){        $where = '';        if(is_array($conditions)){            $join = array();            foreach( $conditions as $key => $value ){                $value =  '\''.$value.'\'';                $join[] = "{$key} = {$value}";            }            $where = "WHERE ".join(" AND ",$join);        }else{            if(null != $conditions)$where = "WHERE ".$conditions;        }        $sql = "SELECT count(*) as Frcount FROM {$this->table} {$where}";        $result = $this->getData($sql);        return $result[0]['Frcount'];            }    // 获取繁多字段内容    public function getField($where=null,$fields=null){        if( $record = $this->findAll($where, null, $fields, 1) ){            $res = array_pop($record);            return $res[$fields];        }else{            return FALSE;        }    }    // 递增数据    public function goInc($conditions,$field,$vp=1){        $where = "";        if(is_array($conditions)){            $join = array();            foreach( $conditions as $key => $value ){                $value = '\''.$value.'\'';                $join[] = "{$key} = {$value}";            }            $where = "WHERE ".join(" AND ",$join);        }else{            if(null != $conditions)$where = "WHERE ".$conditions;        }        $values = "{$field} = {$field} + {$vp}";        $sql = "UPDATE {$this->table} SET {$values} {$where}";                return $this->pdo->exec($sql);            }        // 递加    public function goDec($conditions,$field,$vp=1){        return $this->goInc($conditions,$field,-$vp);    }        // 批改数据    public function update($conditions,$row)    {        $where = "";        $row = $this->__prepera_format($row);        if(empty($row)){        return FALSE;        }        if(is_array($conditions)){            $join = array();            foreach( $conditions as $key => $condition ){                $condition = '\''.$condition.'\'';                $join[] = "{$key} = {$condition}";            }            $where = "WHERE ".join(" AND ",$join);        }else{            if(null != $conditions){              $where = "WHERE ".$conditions;            }        }        foreach($row as $key => $value){            $value = '\''.$value.'\'';            $vals[] = "{$key} = {$value}";        }        $values = join(", ",$vals);        $sql = "UPDATE {$this->table} SET {$values} {$where}";        //echo $sql.'<br/>';        $res = $this->pdo->exec($sql);      if($res){          return $res;      }else{          var_dump($this->pdo->errorInfo());      }                    }     // 查问所有    public function findAll($conditions=null,$order=null,$fields=null,$limit=null)    {        $where = '';        if(is_array($conditions)){            $join = array();            foreach( $conditions as $key => $value ){                $value =  '\''.$value.'\'';                $join[] = "{$key} = {$value}";            }            $where = "WHERE ".join(" AND ",$join);        }else{            if(null != $conditions)$where = "WHERE ".$conditions;        }      if(is_array($order)){               $where .= ' ORDER BY ';            $where .= implode(',', $order);      }else{         if($order!=null)$where .= " ORDER BY  ".$order;      }                if(!empty($limit))$where .= " LIMIT {$limit}";        $fields = empty($fields) ? "*" : $fields;         $sql = "SELECT {$fields} FROM {$this->table} {$where}";                return $this->getData($sql);     }     // 查问一条    public function find($where=null,$order=null,$fields=null,$limit=1)    {       if( $record = $this->findAll($where, $order, $fields, 1) ){            return array_pop($record);        }else{            return FALSE;        }    }        // 执行SQL语句并查看是否谬误    public function query($sql){        $this->filter[] = $sql;        $this->Statement = $this->pdo->query($sql);        if ($this->Statement) {            return $this;        }else{            $msg = $this->pdo->errorInfo();            if($msg[2]) exit('数据库谬误:' . $msg[2] . end($this->filter));        }    }     // 执行SQL语句函数    public function findSql($sql)    {        return $this->getData($sql);    }        // 依据条件 (conditions) 删除    public function delete($conditions)    {       $where = "";        if(is_array($conditions)){            $join = array();            foreach( $conditions as $key => $condition ){                $condition = '\''.$condition.'\'';                $join[] = "{$key} = {$condition}";            }            $where = "WHERE ( ".join(" AND ",$join). ")";        }else{            if(null != $conditions)$where = "WHERE ( ".$conditions. ")";        }        $sql = "DELETE FROM {$this->table} {$where}";        return $this->pdo->exec($sql);    }     // 新增数据    public function add($row)    {       if(!is_array($row)){         return FALSE;       }        $row = $this->__prepera_format($row);        if(empty($row)){         return FALSE;        }        foreach($row as $key => $value){            $cols[] = $key;            $vals[] = '\''.$value.'\'';        }        $col = join(',', $cols);        $val = join(',', $vals);         $sql = "INSERT INTO {$this->table} ({$col}) VALUES ({$val})";        if( FALSE != $this->pdo->exec($sql) ){            if( $newinserid = $this->pdo->lastInsertId() ){                return $newinserid;            }else{                $a=$this->find($row, "{$this->primary} DESC",$this->primary);                return array_pop($a);            }        }        return FALSE;    }     private function __prepera_format($rows)    {        $stmt = $this->pdo->prepare('DESC '.$this->table);          $stmt->execute();          $columns = $stmt->fetchAll(PDO::FETCH_COLUMN);        $newcol = array();        foreach( $columns as $col ){            $newcol[$col] = null;        }        return array_intersect_key($rows,$newcol);    }}

实例化类

<?phpheader("Content-type:text/html;charset=utf-8");// 引入类include './db.class.php';// 数据库配置$config  = [    'db_host' => 'localhost', // 数据库地址    'db_port' => 3306, // 默认mysql数据库端口    'db_name' => 'test', // 数据库名字    'db_user' => 'root', // 数据库用户名    'db_pass' => 'root', // 数据库明码    'db_prefix' => '', // 表前缀]; // 实例化类$db = new DB_API($config); // 表名$article = $db->set_table('article'); // 新增数据$newdata = ['title'=>'this is a title'];$r = $article->add($newdata);if($r){    echo '新增胜利!';}else{    echo '操作失败!';}// 查问数据$where = ['id'=>3];$find = $article->find($where); //查问一条数据$find = $article->findAll($where); // 查问多条数据print_r($find); // 更新数据$where = ['title'=>'hello world666'];$update = $article->update(['id'=>1],$where);if($update ){    echo '更新胜利!';    // 查问并打印    $newdata = $article->find('id=1');    print_r($newdata);}else{    echo '更新失败!';} // 删除数据$where = ['id'=>1];$del =  $article->delete($where);if($del){    echo '删除胜利!';}else{    echo '删除失败!';} // 获取符合条件的记录数$where = ['author'=>'TANKING'];$count = $article->getCount($where);echo $count; // 执行原生SQL语句$sql = 'select * from article where id=3';$lists = $article->findSql($sql);print_r($lists); // 依据条件查问出对应的字段的值$where = ['id'=>1];$res = $article->getField($where,'title');if ($res) {    echo $res;}else{    echo "没有数据";}// 高级查问// $conditions查问条件// $order排序办法// $fields指定字段// $limit查问条数$res = $article->findAll($conditions=null,$order='id asc',$fields=null,$limit=null);if ($res) {    print_r($res);}else{    print_r("没有数据");}

Author:TANKING