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

  • 相关阅读:
    Components controls 区别
    lazarus 2016 2月18 4:22:35 支持android开发了, 既ios,linux,macosx,window,web 后 囊括一切啦。 哈哈
    Delphi MlSkin V1.1 发布啦! 它能让你的程序拥有像QQ一样多彩炫丽的外观!
    Tclientdataset的CloneCursor问题 clientdataset 复制 赋值 的问题
    字符串 映射 函数
    字符串 映射相应的 函数 字符串驱动技术—— MethodAddress , MethodName , ObjectInvoke
    一分钟了解nohup和&的功效
    Linux shell标准输入,标准输出,错误输出
    (一)shell编程之执行脚本的三种方式
    Shell:执行脚本文件方法
  • 原文地址:https://www.cnblogs.com/bluealine/p/5427004.html
Copyright © 2011-2022 走看看