zoukankan      html  css  js  c++  java
  • php 封装mysql 数据库操作类

    <?php
    header('content-type:text/html;charset=utf-8');
    //封装mysql   连接数据库php_mysql
    //封装mysql   连接数据库php_mysqli
    //封装mysql   连接数据库php_pdo
    class db{
        //三私一共
        //私有的静态属性
        private static $dbcon = false; //存储数据库连接对象
        //私有的构造方法
        private function __construct(){
            //创建链接
            $dbcon=mysql_connect('127.0.0.1','root','root');
            //选择数据库
            mysql_select_db('yii_back',$dbcon) or die('mysql connect error');
            //设置字符集
            mysql_query('set names utf8');
        }
        //私有的clone
        private function __clone(){}
        //共有的静态方法
        public static function getInstance(){
            if(self::$dbcon == false){
                self::$dbcon = new self;
            }
            return self::$dbcon;
        }

        /**
        *执行sql语句
        *@param $sql
        *@return source
        **/
        public function query($sql){
            //通过mysql_query来实现
            $query = mysql_query($sql);
            
            //返回执行结果
            return $query;
        }

        /**
         * 查询某个字段  eg:  select  name  select count(*)
         *@param $sql
         *@return string or int
        **/
        public function getOne($sql){
            $query=$this->query($sql);
            //有可能出现错误
            if(!$query){
                //SQL语句有错
                echo 'SQL语句错误!<br/>';
                echo '错误编号:' . mysql_errno() . '<br/>';
                echo '错误原因:' . mysql_error() . '<br/>';
                exit;
            }    
            return mysql_result($query,0);
        }

        /**
         * 查询一行记录
         *@param $sql
         *@return array 一维数组
         *mysql_fetch_assoc  mysql_fetch_array  mysql_fetch_row
        **/
        public function getRow($sql,$type="assoc"){
            $query=$this->query($sql);
            if(!in_array($type,array('assoc','array','row'))){
                die('mysql_query error!');
            }
            $funcname = "mysql_fetch_".$type;
            return $funcname($query);
        }

        /**
         * 查询多条记录
         *@param $sql
         *@return array 二维数组
         *mysql_fetch_assoc  mysql_fetch_array  mysql_fetch_row
        **/
        public function getAll($sql){
            //调用sql 执行函数
            $query=$this->query($sql);
            $list=array();
            //遍历结果
            //while($arr = $this->getRowFromSource($query)){
            while($arr = mysql_fetch_assoc($query)){
                $list[]=$arr;
            }
            return $list;
        }

        /**
         * 获得上一次插入的id
        **/
        public function getInsertId(){
            return mysql_insert_id();
        }

        /**
         * 新增数据方法
         * @param1 string $sql,要执行的SQL语句
         * @param1 array  $data,要添加的数据
         * @return 自增长id
        **/
        public function insert($table,$data=array()){  
            //print_r($data);die;
            $sql="insert into ".$table."(".implode(',',array_keys($data)).") values ('".implode("','",array_values($data))."')";
            //调用sql 执行函数
            $query=$this->query($sql);
            if($query){
                //返回数据
                return mysql_insert_id();  //得到上次操作的自增长ID
            }else{
                return $sql;
            }
        }

        /**
         * 修改数据方法
         * @param string $table 操作的数据表名
         * @param array $data 操作的数据
         * @param array $condition 条件
        **/
        public function update($table,$data,$condition=array()){
            $where='';
            if(!empty($condition)){   
                foreach($condition as $k=>$v){
                    $where.=$k."='".$v."' and ";
                }
                $where='where '.$where .'1=1';
            }
            $updatastr = '';
            if(!empty($data)){
                foreach($data as $k=>$v){
                    $updatastr.= $k."='".$v."',";
                }
                $updatastr = 'set '.rtrim($updatastr,',');
            }
            $sql = "update {$table} {$updatastr} {$where}";
            $query=$this->query($sql);
            if($query){
                echo '修改成功';
            }else{
                return $sql;
            }
        }

        /**
         * 删除数据方法
         * @param string $table 操作的数据表名
         * @param array  $condition 删除的条件
         */
        public function delete($table,$condition){
            $where='';
            if(!empty($condition)){     
                foreach($condition as $k=>$v){
                    $where.=$k."='".$v."' and ";
                }
                $where='where '.$where .'1=1';
            }
            $sql="delete from {$table} {$where}";
            $query=$this->query($sql);
            if($query){
                echo '删除成功';
            }else{
                return $sql;
            }
        }

        /**
         * 查询数据方法
         * @param string $table 操作的数据表名
         * @param array  $condition 查询的条件
         * @param array  $field     要查询的字段
         */
        public function select($table,$condition=array(),$field = array()){
            $where='';
            if(!empty($condition)){
                 
                foreach($condition as $k=>$v){
                    $where.=$k."='".$v."' and ";
                }
                $where='where '.$where .'1=1';
            }
            $fieldstr = '';
            if(!empty($field)){
                foreach($field as $k=>$v){
                    $fieldstr.= $v.',';
                }
                $fieldstr = rtrim($fieldstr,',');
            }else{
                $fieldstr = '*';
            }
            $sql = "select {$fieldstr} from {$table} {$where}";
            $query=$this->query($sql);
            $resultRow = array();
            $i = 0;
            while($row=mysql_fetch_assoc($query)){
                foreach($row as $k=>$v){
                    $resultRow[$i][$k] = $v;
                }
                $i++;
            }
            return $resultRow;
        }
    }

  • 相关阅读:
    jdbc框架 commons-dbutils的使用
    SpringBoot整合Quartz和H2的例子
    Microsoft VS 2008 过期解决方法
    数据库事务的隔离级别
    angularJS中ng-if的用法
    angularJS中ng-change的用法
    Hello,Akka
    Yum常用命令及Yum中文手册
    最大堆的插入/删除/调整/排序操作(图解+程序)(JAVA)
    别人要访问我的电脑上部署的tomcat,必须关闭防火墙吗?
  • 原文地址:https://www.cnblogs.com/bluealine/p/5427004.html
Copyright © 2011-2022 走看看