情、非得已 发表于 2017-10-28 16:43:03

分享几个sql常用的封装方法

直接上代码
/**
       * 单条记录 关联查询
       *
       * @param string|表名   $name
       * @param string|查询字段 $where
       * @param string      $select
       * @param string      $relation 关联添加
       * @return mixed
       */
        public function get_row_join($name, $where, $select = '*', $relation = '')
        {
                $this->db->select($select);
                $this->db->from($name);
                if ($relation) {
                        if (isset($relation)) {
                                foreach ($relation as $item) {
                                        $this->db->join($item['table'], $item['condition'], $item['type']);
                                }
                        } else {
                                $this->db->join($relation['table'], $relation['condition'], $relation['type']);
                        }
                }
                $where && $this->db->where($where);
                return $this->db->get()->row_array();
        }

        /**
       * 获取多条记录 关联查询
       *
       * @param      $name
       * @param array$where
       * @param string $order_by
       * @param string $limit
       * @param string $select
       * @param string $relation 关联添加
       * @return mixed
       */
        public function get_result_join($name, $where = array(), $order_by = '', $limit = '', $select = '*', $relation = '')
        {
                $this->db->select($select);
                $this->db->from($name);
                if ($relation) {
                        if (isset($relation)) {
                                foreach ($relation as $item) {
                                        $this->db->join($item['table'], $item['condition'], $item['type']);
                                }
                        } else {
                                $this->db->join($relation['table'], $relation['condition'], $relation['type']);
                        }
                }
                $where && $this->db->where($where);
                $order_by && $this->db->order_by($order_by);
                $limit && $this->db->limit($limit, $limit);
                return $this->db->get()->result_array();
        }

        /**
       * 查询总数量
       *
       * @param string $table
       * @param array$where
       * @return string
       */
        public function counts($table = '', $where = array())
        {
                $where && $this->db->where($where);

                return $this->db->count_all_results($table);
        }

        /**
       * 更新表字段
       *
       * @param string $table
       * @param string $id
       * @param string $point       //要更新的字段
       * @param string $point_after //要更新的数值
       * @return mixed
       */
        public function set($table = '', $id = '', $point = '', $point_after = '')
        {
                return $this->db->where('id', $id)->set($point, $point_after, false)->update($table);
        }

        /**
       * 获取单条数据
       *
       * @author markYang
       *
       * @param $table      表名
       * @param $fields   查询字段
       * @param $whereParam 条件数组
       * @param $condParamarray('order'=>'', 'group'=>'')
       * @return 以数组格式返回数组
       */
        public function get_row($table = '', $fields = '*', $whereParam = array(), $condParam = array())
        {

                //检测表名参数
                empty($table) && show_error('The table name cannot be empty');
                //检测并初始化查询字段参数
                empty($fields) || $this->db->select($fields);
                //检测条件参数数组
                empty($whereParam) || $this->db->where($whereParam);
                //检测并初始化ORDER BY 参数
                !empty($condParam['orderby']) && $this->db->order_by($condParam['orderby']);
                //检测并初始化GROUP BY 参数
                isset($condParam['groupby']) && $this->db->group_by($condParam['groupby']);

                //执行并以数组格式返回数据
                return $this->db->get($table, 1)->row_array();
        }

        /**
       * 获取多条数据
       *
       * @author markYang
       *
       * @param $table      表名
       * @param $fields   查询字段
       * @param $whereParam 条件数组
       * @param $condParamarray('orderby'=>'', 'groupby'=>'', 'limit'=>'')
       * @return 以数组格式返回数组
       */
        public function get_rows($table = '', $fields = '*', $whereParam = array(), $condParam = array())
        {

                //检测表名参数
                empty($table) && show_error('The table name cannot be empty');
                //检测并初始化查询字段参数
                empty($fields) || $this->db->select($fields);
                //检测并初始化条件参数数组
                empty($whereParam) || $this->db->where($whereParam);
                //检测并初始化ORDER BY 参数
                !empty($condParam['orderby']) && $this->db->order_by($condParam['orderby']);
                //检测并初始化GROUP BY 参数
                !empty($condParam['groupby']) && $this->db->group_by($condParam['groupby']);
                //检测获取数据条数
                if (!empty($condParam['limit'])) {
                        $limitArr = explode(',', $condParam['limit']);
                        empty($limitArr) ? $this->db->limit($limitArr) : $this->db->limit($limitArr, $limitArr);
                }

                //执行并以数组格式返回数据
                return $this->db->get($table)->result_array();
        }

        /**
       * 获取多条数据
       *
       * @author markYang
       *
       * @param $sql sql语句
       * @return 以数组格式返回数组
       */
        public function get_rows_query($sql = '')
        {

                //检测SQL参数
                empty($sql) && show_error('SQL语句不能为空!');

                //执行并以数组格式返回数据
                return $this->db->query($sql)->result_array();
        }

        /**
       * 添加数据信息
       *
       * @author markYang
       *
       * @param $table    表名
       * @param $setParam 需要修改的信息数组
       * @return 返回执行结果
       */
        public function insert($table = '', $setParam = array())
        {

                //检测表名参数
                empty($table) && show_error('The table name cannot be empty');
                //检测修改信息数组参数
                empty($setParam) && show_error('Set up information cannot be empty');
                //执行并返回执行结果
                if ($this->db->insert($table, $setParam)) {
                        return $this->db->insert_id();
                } else {
                        return false;
                }
        }

        /**
       * 批量添加数据
       *
       * @author markYang
       *
       * @param $table    表名
       * @param $setParam 需要修改的信息数组
       * @return 返回执行结果
       */
        public function insert_batch($table = '', $setParam = array())
        {

                //检测表名参数
                empty($table) && show_error('The table name cannot be empty');
                //检测修改信息数组参数
                empty($setParam) && show_error('Set up information cannot be empty');
                //执行并返回执行结果
                return $this->db->insert_batch($table, $setParam);
        }

        /**
       * 修改数据信息
       *
       * @author markYang
       *
       * @param $table      表名
       * @param $setParam   需要修改的信息数组
       * @param $whereParam 条件信息数组
       * @param $limit      限制数量
       * @return 返回执行结果
       */
        public function update_row($table = '', $setParam = array(), $whereParam = array(), $limit = null)
        {

                //检测表名参数
                empty($table) && show_error('The table name cannot be empty');
                //检测修改信息数组参数
                empty($setParam) && show_error('Set up information cannot be empty');
                //检测条件信息数组参数
                empty($whereParam) && show_error('Condition parameters cannot be empty');

                //执行并返回执行结果
                $this->db->update($table, $setParam, $whereParam, $limit);
                return $this->db->affected_rows();
        }

        /**
       * 批量修改数据信息
       *
       * @author markYang
       *
       * @param $table    表名
       * @param $setParam 需要修改的数值数组
       * @param $index    修改修改的字段名
       * @return 返回执行结果
       */
        public function update_batch($table = '', $setParam = array(), $index = '')
        {

                //检测表名参数
                empty($table) && show_error('The table name cannot be empty');
                //检测修改信息数组参数
                empty($setParam) && show_error('Set up information cannot be empty');
                //检测条件信息数组参数
                empty($index) && show_error('the value of index cannot be empty');

                //执行并返回执行结果
                return $this->db->update_batch($table, $setParam, $index);
        }

        /**
       * 删除数据信息
       *
       * @author markYang
       */
        public function delete($table = '', $whereParam = array(), $limit = null, $reset_data = true)
        {

                //检测表名参数
                empty($table) && show_error('The table name cannot be empty');

                //执行并返回执行结果
                return $this->db->delete($table, $whereParam, $limit, $reset_data);
        }

可以新建一个类,放在里面用,基本都是常用的

Sam@ 发表于 2017-10-29 13:41:50

好顶赞,收藏了
页: [1]
查看完整版本: 分享几个sql常用的封装方法