基于mysqli的数据库操作类

<?php
/*****************************
数据库访问类(MySQLi版)
******************************/
class MySQLiDb{
    //数据库链接本身
    private $link;
    //最后一次执行的sql语句
    private $sql;
    //初始化类
    public function __construct($hostname,$username,$password,$database){
        $this->link=new mysqli($hostname,$username,$password,$database);
        if(mysqli_connect_error()){
            $errorInfo=‘Error:Could not make a database link (‘.
                mysqli_connect_errno().‘)‘.mysqli_connect_error();
            throw new ErrorException($errorInfo, 1);
        }
        $this->link->set_charset("utf8");
    }

    //获取插入后生成的ID
    private function getLastId(){
        return $this->link->insert_id;
    }

    //获取影响的行数
    private function countAffected(){
        return $this->link->affected_rows;
    }

    //将数组格式的条件组装成字符串
    private function rewhere($where){
        $str=‘‘;
        foreach($where as $key=>$value){
            if(!empty($str)){
                $str.=‘ and ‘;
            }
            $rekey=$this->link->escape_string($key);
            $revalue=$this->link->escape_string($value);
            $str.=is_numeric($revalue)?"`$rekey`=$revalue":"`$rekey`=‘$revalue‘";
        }
        return $str;
    }

    public function create($table,$model){
        $fields=‘‘;
        $values=‘‘;
        foreach ($model as $key => $value) {
            if($fields){
                $fields.=‘,‘;
            }
            $fields.="`$key`";
            if($values){
                $values.=‘,‘;
            }
            $values.=is_numeric($value)?$value:"‘".$this->link->escape_string($value)."‘";
        }
        $this->sql="INSERT INTO `$table`($fields) VALUES($values)";
        echo $this->sql;
        $this->link->query($this->sql);
        return $this->link->insert_id;
    }

    public function modify($table,$model,$where){
        $assins=‘‘;
        $where=$this->rewhere($where);
        foreach ($model as $key => $value) {
            $rkey=$this->link->escape_string($key);
            $rvalue=$this->link->escape_string($value);
            if(!is_numeric($rvalue)){
                $rvalue="‘".$rvalue."‘";
            }
            $assins.=$assins?",`$rkey`=$rvalue":"`$rkey`=$rvalue";
        }
        $this->sql="UPDATE `$table` SET $assins WHERE $where";
        echo $this->sql;
        $this->link->query($this->sql);
    }

    public function remove($table,$where){
        $where=$this->rewhere($where);
        $this->sql="DELETE FROM `$table` WHERE $where";
        echo $this->sql;
        $this->link->query($this->sql);
    }

    public function search($table,$where){
        $where=$this->rewhere($where);
        $this->sql="SELECT * FROM `$table` WHERE $where";
        $this->link->query($this->sql);
        $result=$this->link->query($this->sql);
        return $result -> fetch_assoc();
    }

    public function unique($table,$where){
        $where=$this->rewhere($where);
        $this->sql="SELECT * FROM `$table` WHERE $where LIMIT 1";
        $result=$this->link->query($this->sql);
        return $result -> fetch_object();
    }
}
时间: 2024-12-20 09:01:37

基于mysqli的数据库操作类的相关文章

php pdo mysql数据库操作类

原文:php pdo mysql数据库操作类 findAll(array( 'field'=>'ID,albumName,albumImage, mainActor,directors,tags,info,area, keywords,wflag,year,mod_version,totalDuration', 'where'=>$where, 'order'=>'flag desc,hit_count desc', 'limit'=>"{$limit['offset']

MySQL数据库操作类(PHP实现,支持连贯操作)

使用过ThinkPHP框架的同学可能会对于其中数据库模型操作特别有好感,ThinkPHP提供了数据库操作的简单的操作,对于连接数据库,数据库的增删改查等数据操作都非常的nice,同时支持连贯操作,对于那些不习惯写sql语句的同学真是大大的便利.(注:sql还是很重要的,不要因为用了框架就把原先的忘了). 而在笔者使用php操作redis实现后台任务的过程中,也想要借助这种便利,但无奈redis操作单独的类,直接访问其中的controller文件的话,总是会提示M方法失败,导致此模型方法不能使用.

Android打造属于自己的数据库操作类。

1.概述 开发Android的同学都知道sdk已经为我们提供了一个SQLiteOpenHelper类来创建和管理SQLite数据库,通过写一个子类去继承它,就可以方便的创建.管理数据库.但是当我们需要去做增删改查的操作的时候,就得通过getWritableDatabase获取一个SQLiteDataBase然后老老实实去写操作值的put以及查询返回的Cursor处理,其实我们可以搞一个对象来帮我们干这些事情,打造属于你自己的数据库操作类. 2.操作类的初显形 假设现在我们什么都没有,我们要去搞一

PHP 数据库操作类:ezSQL

EZSQL类介绍: 下载地址:http://www.jb51.net/codes/26393.html ezsql是一个小型的快速的数据库操作类,可以让你很容易地用PHP操作各种数据库( MySQL.oracle8/9 .interbase.FireBird.PostgreSQL.MS-SQL.sqlite.sqlite C++). 在你的脚本开头是要包含一个一个PHP文件.然后,你就可以使用更小.更容易的一套ezsql函数来代替标准的PHP数据库函数. 它会自动缓存的查询结果,提供了一系列简单

php中mysql数据库操作类

talk less and show code: <?php/** *以下代码用于数据库操作类的封装* * @author rex<[email protected]> * @version 1.0* @since 2015*/ class Mysql{ //数据库连接返回值 private $conn; /*** [构造函数,返回值给$conn]* @param [string] $hostname [主机名]* @param [string] $username[用户名]* @par

刚整了一个数据库操作类,但是可以用吗?

今天闲来无事,把以前自己搞的一个数据库操作类重新整理了一下,把命名规范了一下,位置和功能重新规划了一下. 源代码下载:http://files.cnblogs.com/xiaoshuai1992/xsFrameWork.SqlServer.zip 请先看图片和介绍 DbOperate文件夹 DbAccess类:核心类,运用Ado.net 对数据库进行操作. DbInParameter :传入DbAccess的参数,如参数,sql语句,sp名称,sp是执行还是返回数据. DbOutParamete

PHP类初识,通用数据库操作类,前端easyui-datagrid,form

实现功能:     左端datagrid显示简略信息,右侧显示选中行详细信息,数据库增删改 (1)点击选中行,右侧显示详细信息,其中[新增].[修改].[删除]按钮可用,[保存]按钮禁用 (2)点击[新增]按钮,[修改],[删除]按钮禁用,[保存]按钮启用 (3)点击[修改]按钮,[新增],[删除]按钮禁用 难点:通用数据库操作类中insert方法跟update方法 最终效果图: 前端功能不是很完善,按钮之间逻辑还是有点问题,最后补充前端代码 其中Formain.php对前端传值判断,并调用ac

PHP实现的一个简单的数据库操作类

PHP实现的一个简单的数据库操作类 实现的功能: - 在实例化的时候能设置连接字符集 - 在实例化的时候能连接数据库 - 在实例化的时候能选择默认数据库 - 销毁对象时关闭数据库 代码如下: <?php // 数据库操作类MySQLDB class MySQLDB { // 声明属性 private $server; private $username; private $password; public $default_db; public $link; // 声明构造函数 public f

php数据库操作类

话不多说,直接上代码! model.php 这里面为PHP的数据库操作类. 1 <?php 2 $config = include 'config.php'; 3 $m = new Model($config); 4 // $m->limit('0,5') 5 // ->table('imooc_cate') 6 // ->field('id,cName') 7 // ->order('id desc') 8 // ->where('id>3') 9 // -&g