首頁  >  文章  >  後端開發  >  MySQL資料庫操作類別PHP實現,支援連貫操作 mysql資料庫下載64位元 sql資料庫實例下載 sql資料庫補丁下載

MySQL資料庫操作類別PHP實現,支援連貫操作 mysql資料庫下載64位元 sql資料庫實例下載 sql資料庫補丁下載

WBOY
WBOY原創
2016-07-29 08:53:19928瀏覽

使用過ThinkPHP框架的同學可能會對於其中數據庫模型操作特別有好感,ThinkPHP提供了數據庫操作的簡單的操作,對於連接數據庫,數據庫的增刪改查等數據操作都非常的nice,同時支持連貫操作,對於那些不習慣寫sql語句的同學真是大大的便利。 (註:sql還是很重要的,不要因為用了框架就把原先的忘了)。
而在筆者使用php操作redis實現後台任務的過程中,也想要藉助這種便利,但無奈redis操作單獨的類,直接訪問其中的controller文件的話,總是會提示M方法失敗,導致此模型方法不能使用。萬般無奈之下,只能自己來實現一下了。
借助PHP的mysqli相關函數,進行MySQL資料庫操作類別的實作。此程式中提供資料庫的操作包括:資料庫的連接,資料庫的選擇,資料庫使用者的選擇,對應資料庫中所有資料表名的檢視;資料表的操作包括:對應的資料表中欄位全部屬性的查看,資料表的增刪改查操作,資料表查詢、插入的連貫操作等

<code><span><span><span><?php</span>
/**
 * Author: helen
 * CreateTime: 2016/4/12 20:14
 * description: 数据库操作类(仅对接MySQL数据库,主要利用MySQLi函数)
 */</span><span><span>class</span><span>Database</span>{</span><span>//MySQL主机地址</span><span>private</span><span>$_host</span>;
    <span>//MySQL用户名</span><span>private</span><span>$_user</span>;
    <span>//MySQL用户密码</span><span>private</span><span>$_password</span>;
    <span>//指定数据库名称</span><span>private</span><span>$_database</span>;
    <span>//MySQL数据库端口号</span><span>private</span><span>$_port</span>;
    <span>private</span><span>$_socket</span>;
    <span>//当前数据库对象</span><span>private</span><span>$_dbObj</span>;
    <span>//数据库表</span><span>private</span><span>$_table</span>;
    <span>//数据库表对象</span><span>private</span><span>$_tableObj</span>;
    <span>// 最近错误信息</span><span>protected</span><span>$error</span>            =   <span>''</span>;
    <span>// 数据信息</span><span>protected</span><span>$data</span>             =   <span>array</span>();
    <span>// 查询表达式参数</span><span>protected</span><span>$options</span>          =   <span>array</span>();
    <span>protected</span><span>$_validate</span>        =   <span>array</span>();  <span>// 自动验证定义</span><span>protected</span><span>$_auto</span>            =   <span>array</span>();  <span>// 自动完成定义</span><span>protected</span><span>$_map</span>             =   <span>array</span>();  <span>// 字段映射定义</span><span>protected</span><span>$_scope</span>           =   <span>array</span>();  <span>// 命名范围定义</span><span>// 链操作方法列表</span><span>protected</span><span>$methods</span>          =   <span>array</span>(<span>'strict'</span>,<span>'order'</span>,<span>'alias'</span>,<span>'having'</span>,<span>'group'</span>,<span>'lock'</span>,<span>'distinct'</span>,<span>'auto'</span>,<span>'filter'</span>,<span>'validate'</span>,<span>'result'</span>,<span>'token'</span>,<span>'index'</span>,<span>'force'</span>);

    <span>/**
     * Database类初始化函数
     * 取得DB类的实例对象 字段检查
     *<span> @access</span> public
     *<span> @param</span> string $host MySQL数据库主机名
     *<span> @param</span> string $user MySQL数据库用户名
     *<span> @param</span> string $password MySQL数据库密码
     *<span> @param</span> string $database 指定操作的数据库
     *<span> @return</span> mixed  数据库连接信息、错误信息
     */</span><span>public</span><span><span>function</span><span>__construct</span><span>(<span>$host</span>,<span>$user</span>,<span>$passowrd</span>,<span>$database</span>,<span>$port</span>=<span>3306</span>)</span>{</span><span>$this</span>->_initialize();
        <span>if</span>(!<span>isset</span>(<span>$host</span>)||!<span>isset</span>(<span>$user</span>)||!<span>isset</span>(<span>$passowrd</span>)||!<span>isset</span>(<span>$database</span>)){
            <span>return</span><span>false</span>;
        }<span>else</span>{
            <span>$this</span>->_host     = <span>$host</span>;
            <span>$this</span>->_user     = <span>$user</span>;
            <span>$this</span>->_password = <span>$passowrd</span>;
            <span>$this</span>->_database = <span>$database</span>;
            <span>$this</span>->_port     = <span>$port</span>;
            <span>$_dbObj</span> = <span>new</span> mysqli(<span>$host</span>,<span>$user</span>,<span>$passowrd</span>,<span>$database</span>,<span>$port</span>);
            <span>if</span>(<span>$_dbObj</span>->connect_errno){
                <span>$this</span>->error = <span>$_dbObj</span>->connect_error;
                <span>return</span><span>false</span>;
            }<span>else</span>{
                <span>$this</span>->_dbObj = <span>$_dbObj</span>;
                <span>return</span><span>$this</span>;
            }
        }
    }
    <span>/**
     * 错误信息函数
     * 返回数据库操作过程中最后一次执行时的错误信息
     *<span> @access</span> public
     *<span> @return</span> mixed  数据库连接错误信息(正常返回'')
     */</span><span>public</span><span><span>function</span><span>error</span><span>()</span>{</span><span>return</span><span>$this</span>->error;
    }
    <span>// 回调方法 初始化模型</span><span>protected</span><span><span>function</span><span>_initialize</span><span>()</span> {</span>}
    <span>/**
     * 设置数据对象的值
     *<span> @access</span> public
     *<span> @param</span> string $name 名称
     *<span> @param</span> mixed $value 值
     *<span> @return</span> void
     */</span><span>public</span><span><span>function</span><span>__set</span><span>(<span>$name</span>,<span>$value</span>)</span> {</span><span>// 设置数据对象属性</span><span>$this</span>->data[<span>$name</span>] = <span>$value</span>;
    }

    <span>/**
     * 获取数据对象的值
     *<span> @access</span> public
     *<span> @param</span> string $name 名称
     *<span> @return</span> mixed
     */</span><span>public</span><span><span>function</span><span>__get</span><span>(<span>$name</span>)</span> {</span><span>return</span><span>isset</span>(<span>$this</span>->data[<span>$name</span>])?<span>$this</span>->data[<span>$name</span>]:<span>null</span>;
    }

    <span>/**
     * 检测数据对象的值
     *<span> @access</span> public
     *<span> @param</span> string $name 名称
     *<span> @return</span> boolean
     */</span><span>public</span><span><span>function</span><span>__isset</span><span>(<span>$name</span>)</span> {</span><span>return</span><span>isset</span>(<span>$this</span>->data[<span>$name</span>]);
    }

    <span>/**
     * 销毁数据对象的值
     *<span> @access</span> public
     *<span> @param</span> string $name 名称
     *<span> @return</span> void
     */</span><span>public</span><span><span>function</span><span>__unset</span><span>(<span>$name</span>)</span> {</span><span>unset</span>(<span>$this</span>->data[<span>$name</span>]);
    }
    <span>/**
     * 利用__call方法实现一些特殊的方法(对于调用类中不存在方法的解决方案)
     *<span> @access</span> public
     *<span> @param</span> string $method 方法名称
     *<span> @param</span> array $args 调用参数
     *<span> @return</span> mixed
     */</span><span>public</span><span><span>function</span><span>__call</span><span>(<span>$method</span>,<span>$args</span>)</span> {</span><span>/*if(in_array(strtolower($method),$this->methods,true)) {
            // 连贯操作的实现
            $this->options[strtolower($method)] =   $args[0];
            return $this;
        }elseif(in_array(strtolower($method),array('count','sum','min','max','avg'),true)){
            // 统计查询的实现
            $field =  isset($args[0])?$args[0]:'*';
            return ;
        }elseif(strtolower(substr($method,0,5))=='getby') {
            // 根据某个字段获取记录
            $field   =   parse_name(substr($method,5));
            $where[$field] =  $args[0];
            return ;
        }elseif(strtolower(substr($method,0,10))=='getfieldby') {
            // 根据某个字段获取记录的某个值
            $name   =   parse_name(substr($method,10));
            $where[$name] =$args[0];
            return ;
        }elseif(isset($this->_scope[$method])){// 命名范围的单独调用支持
            return ;
        }else{

        }*/</span>
    }
    <span>/*
     * 选择数据库
     *<span> @access</span> public
     *<span> @param</span> string $database 选择的数据库名称
     *<span> @return</span> mixed 数据库连接信息
     * */</span><span>public</span><span><span>function</span><span>select_db</span><span>(<span>$database</span>)</span>{</span><span>$select_db</span> = mysqli_select_db(<span>$this</span>->_dbObj,<span>$database</span>);
        <span>if</span>(<span>$select_db</span>){
            <span>$this</span>->_database = <span>$database</span>;
            <span>$_dbObj</span> = <span>new</span> mysqli(<span>$this</span>->_host,<span>$this</span>->_user,<span>$this</span>->_password,<span>$database</span>,<span>$this</span>->_port);
            <span>$this</span>->_dbObj = <span>$_dbObj</span>;
            <span>return</span><span>$this</span>;
        }<span>else</span>{
            <span>$this</span>->error = mysqli_error(<span>$this</span>->_dbObj);
            <span>return</span><span>false</span>;
        }
    }
    <span>/*
     * 数据库用户更换
     *<span> @access</span> public
     *<span> @param</span> string $user 数据库用户名称
     *<span> @param</span> string $password 数据库用户密码
     *<span> @return</span> mixed 数据库连接信息
     * */</span><span>public</span><span><span>function</span><span>change_user</span><span>(<span>$user</span>,<span>$password</span>)</span>{</span><span>$change_user</span> = mysqli_change_user(<span>$this</span>->_dbObj,<span>$user</span>,<span>$password</span>,<span>$this</span>->_database);
        <span>if</span>(<span>$change_user</span>){
            <span>$this</span>->_user = <span>$user</span>;
            <span>$this</span>->_password = <span>$password</span>;
            <span>$_dbObj</span> = <span>new</span> mysqli(<span>$this</span>->_host,<span>$this</span>->_user,<span>$this</span>->_password,<span>$this</span>->_database,<span>$this</span>->_port);
            <span>$this</span>->_dbObj = <span>$_dbObj</span>;
            <span>return</span><span>$this</span>;
        }<span>else</span>{
            <span>$this</span>->error = mysqli_error(<span>$this</span>->_dbObj);
            <span>return</span><span>false</span>;
        }
    }
    <span>/*
     * 查询数据库中所有的表名
     *<span> @access</span> public
     *<span> @return</span> array 数据表的数量和表名
     * */</span><span>public</span><span><span>function</span><span>tables</span><span>()</span>{</span><span>$sql</span> = <span>'show tables'</span>;
        <span>$search_res</span> = mysqli_query(<span>$this</span>->_dbObj,<span>$sql</span>);
        <span>if</span>(<span>$search_res</span>){
            <span>$num_rows</span> = <span>$search_res</span>->num_rows;
            <span>$tables_msg</span> = <span>array</span>(
                <span>'count'</span>=><span>$num_rows</span>,
                <span>'tables'</span>=><span>array</span>()
            );
            <span>for</span>(<span>$i</span>=<span>0</span>;<span>$i</span><<span>$num_rows</span>;<span>$i</span>++){
                <span>$row</span> = <span>$search_res</span>->fetch_assoc();
                <span>$key</span> = <span>'Tables_in_'</span>.<span>$this</span>->_database;
                array_push(<span>$tables_msg</span>[<span>'tables'</span>],<span>$row</span>[<span>$key</span>]);
            }
            mysqli_free_result(<span>$search_res</span>);
            <span>return</span><span>$tables_msg</span>;
        }<span>else</span>{
            mysqli_free_result(<span>$search_res</span>);
            <span>return</span><span>false</span>;
        }
    }
    <span>/*
     * 获取指定表中所有信息
     *<span> @access</span> public
     *<span> @param</span> string $table 数据表名称
     *<span> @return</span> array 数据表的详细信息
     * */</span><span>public</span><span><span>function</span><span>select_table</span><span>(<span>$table</span>)</span>{</span><span>$sql</span> = <span>'select * from '</span>.<span>$table</span>;
        <span>$search_res</span> = mysqli_query(<span>$this</span>->_dbObj,<span>$sql</span>);
        <span>if</span>(<span>$search_res</span>){
            <span>$this</span>->_table = <span>$table</span>;
            <span>$table_msg</span> = <span>self</span>::query_handle(<span>$search_res</span>);
            <span>$this</span>->_tableObj = <span>$table_msg</span>;
            mysqli_free_result(<span>$search_res</span>);
            <span>return</span><span>$table_msg</span>;
        }<span>else</span>{
            mysqli_free_result(<span>$search_res</span>);
            <span>return</span><span>false</span>;
        }
    }
    <span>/*
     * 获取指定表的字段详细信息
     *<span> @access</span> public
     *<span> @param</span> string $table 数据表名称
     *<span> @return</span> array 数据表的字段详细信息
     * */</span><span>public</span><span><span>function</span><span>select_table_fields</span><span>(<span>$table</span>)</span>{</span><span>$sql</span> = <span>'show fields from '</span>.<span>$table</span>;
        <span>$search_res</span> = mysqli_query(<span>$this</span>->_dbObj,<span>$sql</span>);
        <span>if</span>(<span>$search_res</span>){
            <span>$this</span>->_table = <span>$table</span>;
            <span>$fields_msg</span> = <span>self</span>::query_handle(<span>$search_res</span>);
            mysqli_free_result(<span>$search_res</span>);
            <span>return</span><span>$fields_msg</span>;
        }<span>else</span>{
            mysqli_free_result(<span>$search_res</span>);
            <span>return</span><span>false</span>;
        }
    }
    <span>/*
     * 获取数据表中指定字段信息(允许多字段同时查询)
     *<span> @access</span> public
     *<span> @param</span> mixed $field 指定字段(字符串传入使用,间隔)
     *<span> @return</span> array 数据表中指定字段信息
     * */</span><span>public</span><span><span>function</span><span>getField</span><span>(<span>$field</span>)</span>{</span><span>$fields</span> = <span>self</span>::param_handle(<span>$field</span>);
        <span>$count</span> = count(<span>$fields</span>);
        <span>for</span>(<span>$i</span>=<span>0</span>;<span>$i</span><<span>$count</span>;<span>$i</span>++){
            <span>$index</span> = <span>$fields</span>[<span>$i</span>];
            <span>$sql</span> = <span>'select '</span>.<span>$index</span>.<span>' from '</span>.<span>$this</span>->_table;
            <span>$res</span> = mysqli_query(<span>$this</span>->_dbObj,<span>$sql</span>);
            <span>$field_msg</span>[<span>$index</span>] = <span>self</span>::query_handle(<span>$res</span>);
        }
        <span>return</span><span>$field_msg</span>;
    }
    <span>/*
     * mysqli_query函数结果处理函数
     *<span> @access</span> protected
     *<span> @param</span> object $obj mysqli_query函数结果
     *<span> @return</span> array 数据表中指定字段信息
     * */</span><span>protected</span><span><span>function</span><span>query_handle</span><span>(<span>$obj</span>)</span>{</span><span>$res</span> = <span>array</span>();
        <span>for</span>(<span>$i</span>=<span>0</span>;<span>$i</span><<span>$obj</span>->num_rows;<span>$i</span>++){
            <span>$row</span> = <span>$obj</span>->fetch_assoc();
            array_push(<span>$res</span>,<span>$row</span>);
        }
        <span>return</span><span>$res</span>;
    }
    <span>/*
     * 传入参数处理函数
     *<span> @access</span> protected
     *<span> @param</span> mixed $param 传入参数
     *<span> @return</span> array 处理后数组数据
     * */</span><span>public</span><span><span>function</span><span>param_handle</span><span>(<span>$param</span>)</span>{</span><span>if</span>(is_string(<span>$param</span>)&&!<span>empty</span>(<span>$param</span>)){
            <span>$params</span> = explode(<span>','</span>,<span>$param</span>);
        }<span>elseif</span>(is_array(<span>$param</span>)&&!<span>empty</span>(<span>$param</span>)){
            <span>$params</span> = <span>$param</span>;
        }<span>else</span>{
            <span>return</span><span>false</span>;
        }
        <span>return</span><span>$params</span>;
    }
    <span>/*
     * 查询表达式参数处理函数
     *<span> @access</span> protected
     *<span> @param</span> mixed $param 传入参数(where limit order)
     *<span> @return</span> string 处理后字符串数据
     * */</span><span>public</span><span><span>function</span><span>options_handle</span><span>(<span>$param</span>)</span>{</span><span>if</span>(is_numeric(<span>$param</span>)){
            <span>$option</span> = <span>$param</span>;
        }<span>elseif</span>(is_string(<span>$param</span>)&&!<span>empty</span>(<span>$param</span>)&&!is_numeric(<span>$param</span>)){
            <span>$params</span> = explode(<span>','</span>,<span>$param</span>);
            <span>$count</span> = count(<span>$params</span>);
            <span>$option</span> = implode(<span>' and '</span>,<span>$params</span>);
        }<span>elseif</span>(is_array(<span>$param</span>)&&!<span>empty</span>(<span>$param</span>)){
            <span>$params</span> = <span>$param</span>;
            <span>$count</span> = count(<span>$params</span>);
            <span>$arr</span> = <span>array</span>();
            <span>foreach</span>(<span>$param</span><span>as</span><span>$key</span>=><span>$value</span>){
                <span>$tip</span> = <span>"$key=$value "</span>;
                array_push(<span>$arr</span>,<span>$tip</span>);
            }
            <span>$option</span> = implode(<span>' and '</span>,<span>$arr</span>);
        }<span>else</span>{
            <span>return</span><span>false</span>;
        }
        <span>return</span><span>$option</span>;
    }
    <span>/*
     * 查询表达式$options处理函数
     *<span> @access</span> protected
     *<span> @return</span> string 处理后字符串数据
     * */</span><span>protected</span><span><span>function</span><span>option</span><span>()</span>{</span><span>$options</span> = <span>$this</span>->options;
        <span>$option</span> = <span>''</span>;
        <span>if</span>(<span>isset</span>(<span>$options</span>[<span>'where'</span>])){
            <span>$option</span> .= <span>'where '</span>.<span>$options</span>[<span>'where'</span>].<span>' '</span>;
        }
        <span>if</span>(<span>isset</span>(<span>$options</span>[<span>'order'</span>])){
            <span>$option</span> .= <span>'order by '</span>.<span>$options</span>[<span>'order'</span>].<span>' '</span>.<span>$options</span>[<span>'order_type'</span>].<span>' '</span>;
        }
        <span>if</span>(<span>isset</span>(<span>$options</span>[<span>'limit'</span>])){
            <span>$option</span> .= <span>'limit '</span>.<span>$options</span>[<span>'limit'</span>];
        }
        <span>return</span><span>$option</span>;
    }
    <span>/*
     * 根据查询表达式查询数据(符合条件的所有记录)
     *<span> @access</span> public
     *<span> @return</span> array 满足查询表达式的特定数据
     * */</span><span>public</span><span><span>function</span><span>find</span><span>()</span>{</span><span>$option</span> = <span>self</span>::option();
        <span>$sql</span> = <span>'select * from '</span>.<span>$this</span>->_table.<span>' '</span>.<span>$option</span>;
        <span>$search_res</span> = mysqli_query(<span>$this</span>->_dbObj,<span>$sql</span>);
        <span>$msg</span> = <span>self</span>::query_handle(<span>$search_res</span>);
        <span>return</span><span>$msg</span>;
    }
    <span>/*
     * 查询表达式 where处理函数
     *<span> @access</span> public
     *<span> @param</span> mixed $where where查询条件
     *<span> @return</span> object $this
     * */</span><span>public</span><span><span>function</span><span>where</span><span>(<span>$where</span>)</span>{</span><span>$this</span>->options[<span>'where'</span>] = <span>self</span>::options_handle(<span>$where</span>);
        <span>return</span><span>$this</span>;
    }
    <span>/*
     * 查询表达式 limit处理函数
     *<span> @access</span> public
     *<span> @param</span> mixed $limit limit查询条件(数字)
     *<span> @return</span> object $this
     * */</span><span>public</span><span><span>function</span><span>limit</span><span>(<span>$limit</span>)</span>{</span><span>$this</span>->options[<span>'limit'</span>] = <span>self</span>::options_handle(<span>$limit</span>);
        <span>return</span><span>$this</span>;
    }
    <span>/*
     * 查询表达式 order处理函数
     *<span> @access</span> public
     *<span> @param</span> string $order order查询条件
     *<span> @param</span> string $type order查询条件的顺序(默认降序)
     *<span> @return</span> object $this
     * */</span><span>public</span><span><span>function</span><span>order</span><span>(<span>$order</span>,<span>$type</span>=<span>'desc'</span>)</span>{</span><span>$this</span>->options[<span>'order'</span>] = <span>$order</span>;
        <span>$this</span>->options[<span>'order_type'</span>] = <span>$type</span>;
        <span>return</span><span>$this</span>;
    }
    <span>/*
     * 数据处理函数(最多处理二维数据)
     *<span> @access</span> public
     *<span> @param</span> array $data 需要插入的数据
     *<span> @return</span> object $this
     * */</span><span>public</span><span><span>function</span><span>data</span><span>(array <span>$data</span>)</span>{</span><span>$values</span> = <span>array</span>();
        <span>$fields</span> = <span>array</span>();
        <span>if</span>(is_array(<span>$data</span>)){
            <span>foreach</span>(<span>$data</span><span>as</span><span>$key</span>=><span>$value</span>){
                <span>if</span>(is_array(<span>$value</span>)){       <span>//二维数组</span><span>$tip</span> = <span>1</span>;
                    array_push(<span>$values</span>,<span>'('</span>.implode(<span>','</span>,array_values(<span>$value</span>)).<span>')'</span>);
                    array_push(<span>$fields</span>,<span>'('</span>.implode(<span>','</span>,array_keys(<span>$value</span>)).<span>')'</span>);
                }<span>else</span>{      <span>//一维数组</span><span>$tip</span> = <span>0</span>;
                }
            }
        }<span>else</span>{
            <span>return</span><span>false</span>;
        }
        <span>if</span>(!<span>$tip</span>){
            array_push(<span>$values</span>,<span>'('</span>.implode(<span>','</span>,array_values(<span>$data</span>)).<span>')'</span>);
            array_push(<span>$fields</span>,<span>'('</span>.implode(<span>','</span>,array_keys(<span>$data</span>)).<span>')'</span>);
        }
        <span>$this</span>->data[<span>'fields'</span>] = <span>$fields</span>[<span>0</span>];
        <span>$this</span>->data[<span>'values'</span>] = implode(<span>','</span>,<span>$values</span>);
        <span>return</span><span>$this</span>;
    }
    <span>/*
     * 数据新增函数
     *<span> @access</span> public
     *<span> @return</span> mixed 数据库新增信息
     * */</span><span>public</span><span><span>function</span><span>add</span><span>()</span>{</span><span>$fields</span> = <span>$this</span>->data[<span>'fields'</span>];
        <span>$values</span> = <span>$this</span>->data[<span>'values'</span>];
        <span>$sql</span> = <span>'INSERT INTO '</span>.<span>$this</span>->_table.<span>$fields</span>.<span>'VALUES'</span>.<span>$values</span>;
        <span>$res</span> = mysqli_query(<span>$this</span>->_dbObj,<span>$sql</span>);
        <span>return</span><span>$res</span>;
    }
    <span>/*
     * 数据更新函数(一维数组)
     *<span> @access</span> public
     *<span> @param</span> array $data 需要更新的数据
     *<span> @return</span> mixed 数据库新增信息
     * */</span><span><span>function</span><span>save</span><span>(array <span>$data</span>)</span>{</span><span>$tip</span> = <span>array</span>();
        <span>if</span>(is_array(<span>$data</span>)){
            <span>foreach</span>(<span>$data</span><span>as</span><span>$key</span>=><span>$value</span>){
                array_push(<span>$tip</span>,<span>"$key=$value"</span>);
            }
        }<span>else</span>{
            <span>return</span><span>false</span>;
        }
        <span>$set_msg</span> = implode(<span>','</span>,<span>$tip</span>);
        <span>$sql</span> = <span>'UPDATE '</span>.<span>$this</span>->_table.<span>' SET '</span>.<span>$set_msg</span>.<span>' WHERE '</span>.<span>$this</span>->options[<span>'where'</span>];
        <span>$res</span> = mysqli_query(<span>$this</span>->_dbObj,<span>$sql</span>);
        <span>return</span><span>$res</span>;
    }
    <span>/*
     * 数据删除函数
     *<span> @access</span> public
     *<span> @return</span> mixed 数据库删除信息
     * */</span><span>public</span><span><span>function</span><span>delete</span><span>()</span>{</span><span>$sql</span> = <span>'DELETE FROM '</span>.<span>$this</span>->_table.<span>' WHERE '</span>.<span>$this</span>->options[<span>'where'</span>];
        <span>$res</span> = mysqli_query(<span>$this</span>->_dbObj,<span>$sql</span>);
        <span>return</span><span>$res</span>;
    }
    <span>/*
     * SQL语句查询
     * */</span><span>public</span><span><span>function</span><span>query</span><span>(<span>$sql</span>)</span>{</span><span>$search_res</span> = mysqli_query(<span>$this</span>->_dbObj,<span>$sql</span>);
        <span>return</span><span>$search_res</span>;
    }
    <span>/*
     * mysql中查询语句
     * */</span><span>protected</span><span><span>function</span><span>sql</span><span>()</span>{</span><span>/*
         * 基本SQL语句
         * 插入数据:INSERT INTO tb_name(id,name,score)VALUES(NULL,'张三',140),(NULL,'张四',178),(NULL,'张五',134);
         * 更新语句:UPDATE tb_name SET score=189 WHERE id=2;
         * 删除数据:DELETE FROM tb_name WHERE id=3;
         * WHERE语句:SELECT * FROM tb_name WHERE id=3;
         * HAVING 语句:SELECT * FROM tb_name GROUP BY score HAVING count(*)>2
         * 相关条件控制符:=、>、<、<>、IN(1,2,3......)、BETWEEN a AND b、NOT AND 、OR Linke()用法中      %  为匹配任意、  _  匹配一个字符(可以是汉字)IS NULL 空值检测
         * MySQL的正则表达式:SELECT * FROM tb_name WHERE name REGEXP '^[A-D]'   //找出以A-D 为开头的name
         * */</span>
    }
    <span>/*
     * 关闭连接
     * */</span><span>public</span><span><span>function</span><span>close</span><span>()</span>{</span><span>$close</span> = mysqli_close(<span>$this</span>->_dbObj);
        <span>if</span>(<span>$close</span>){
            <span>return</span><span>true</span>;
        }<span>else</span>{
            <span>return</span><span>false</span>;
        }
    }
    <span><span>function</span><span>__destruct</span><span>()</span>{</span>
        mysqli_close(<span>$this</span>->_dbObj);
    }
}</span></span></span></code>

操作範例:
首先實例化此類,其中需要輸入host(資料庫位址)、user(資料庫使用者)、password(資料庫使用者密碼)、database(資料庫名稱)此四種信息,進行資料庫的連接,然後即可呼叫select_table()方法,其中傳入資料表名,從而設定對指定表的操作,從而即可利用連貫操作進行對應資料的增刪改查。 其中參數基本上皆支援字串和陣列兩種形式。

<code>include <span>'/classes/db.php'</span>;
            <span>$db</span> = new \Database(<span>'localhost'</span>, <span>'root'</span>, <span>'901230'</span>, <span>'weixin'</span>);
            //<span>$db</span> = new \mysqli(<span>'localhost'</span>,<span>'root'</span>,<span>'901230'</span>,<span>'weixin'</span>);
            //<span>$db</span>->select_db(<span>'visitor'</span>);
            //dump(<span>$db</span>->error());
            //<span>$db</span>->change_user(<span>'helen'</span>,<span>'901230'</span>);
            <span>$table</span> = <span>'zyd_fuweng_user'</span>;
            //dump(<span>$db</span>->select_table_fields(<span>$table</span>));
            //dump(<span>$db</span>->error());
            <span>$db</span>->select_table(<span>$table</span>);
            <span>$param1</span> = <span>'123'</span>;
            <span>$param2</span> = <span>'id>1,record>100'</span>;
            <span>$param3</span> = array(
                /*array(<span>'count'</span>=><span>1</span>,<span>'openid'</span>=><span>'123'</span>,<span>'record'</span>=><span>'100'</span>),
                array(<span>'count'</span>=><span>2</span>,<span>'openid'</span>=><span>'234'</span>,<span>'record'</span>=><span>'200'</span>),*/
                array(<span>'count'</span> => <span>4</span>, <span>'openid'</span> => <span>'456'</span>, <span>'record'</span> => <span>'500'</span>)
            );
            <span>$param4</span> = array(<span>'count'</span> => <span>4</span>, <span>'openid'</span> => <span>'456'</span>, <span>'record'</span> => <span>'500'</span>);
            //dump(<span>$db</span>->where(<span>'id=4'</span>)->save(<span>$param4</span>));
            dump(<span>$db</span>->where(<span>'count=4'</span>)->delete());

            die;
            dump(<span>$db</span>->data(<span>$param3</span>)->add());
            dump(array_keys(<span>$param3</span>));
            dump(array_values(<span>$param3</span>));
            dump(implode(<span>','</span>, array_values(<span>$param3</span>)));
            dump(implode(<span>','</span>, array_keys(<span>$param3</span>)));

            dump(<span>$db</span>->where(<span>$param2</span>)->order(<span>'id'</span>)->limit(<span>2</span>)->find());
            dump(<span>$db</span>->options_handle(<span>$param1</span>));
            dump(<span>$db</span>->options_handle(<span>$param2</span>));
            dump(<span>$db</span>->options_handle(<span>$param3</span>));
            <span>$array</span> = array(<span>'id'</span>, <span>'count'</span>);

            <span>$num</span> = <span>'123'</span>;
            <span>if</span> (is_string(<span>$num</span>)) {
                <span>echo</span><span>'true'</span>;
            }

            dump(<span>$db</span>->getField(<span>$array</span>));
            dump(<span>$db</span>->select_table_fields(<span>$table</span>));
            /*<span>$array</span> = array(<span>'a'</span>,<span>'b'</span>);
            <span>$array1</span> = array();
            dump(<span>$db</span>->getField(<span>'a,b'</span>));
            dump(<span>$db</span>->getField(<span>$array</span>));
            dump(<span>$db</span>->getField(<span>$array1</span>));
            dump(<span>$db</span>->getField(<span>''</span>));*/
            /*<span>$str</span> = <span>''</span>;
            <span>if</span>(empty(<span>$str</span>)){
                <span>echo</span><span>'true'</span>;
            }*/
            /*<span>$model</span> = M(<span>'zyd_fuweng_user'</span>);
            <span>$res</span> = <span>$model</span>->getField(<span>'create_time,count'</span>);
            dump(<span>$res</span>);*/
            die;
            //
            <span>$table</span> = <span>'zyd_fuweng_user'</span>;
            //选择指定的数据库,并返回其中全部信息
            <span>$table_msg</span> = <span>$db</span>->select_table(<span>$table</span>);
            //选择指定数据库,返回数据库的字段信息
            <span>$table_field_msg</span> = <span>$db</span>->select_table_fields(<span>$table</span>);
            //条件搜索,传入条件均为数据
            <span>$where</span> = array(
                <span>'id'</span> => <span>1</span>
            );
            <span>$data</span> = array(
                <span>'headimgurl'</span> => <span>'helen.jpg'</span>
            );
            dump(<span>$db</span>->where(<span>$where</span>)->field(<span>'field'</span>));
            dump(<span>$table</span>);


            /*<span>$dbObj</span> = new \mysqli(<span>'localhost'</span>,<span>'helen'</span>,<span>'901230'</span>,<span>'weixin'</span>,<span>'3306'</span>);
            //<span>$query</span> = <span>'select * from zyd_fuweng_user'</span>;
            <span>$query</span> = <span>'show fields from zyd_fuweng_user'</span>;
            <span>$tables</span> = mysqli_query(<span>$dbObj</span>,<span>$query</span>);
            //dump(<span>$tables</span>);
            <span>$count</span> = <span>$tables</span>->num_rows;
            <span>$arr</span> = array();
            <span>for</span>(<span>$i</span>=<span>0</span>;<span>$i</span><<span>$count</span>;<span>$i</span>++){
                <span>$row</span> = <span>$tables</span>->fetch_assoc();
                //dump(<span>$row</span>);
                array_push(<span>$arr</span>,<span>$row</span>);
            }
            mysqli_free_result(<span>$tables</span>);
            dump(<span>$arr</span>);
            die;
            <span>$query1</span> = <span>'select * from zyd_fuweng_user'</span>;
            <span>$table_msg</span> = mysqli_query(<span>$dbObj</span>,<span>$query1</span>);
            //输出查询结果
            <span>$num</span> = <span>$table_msg</span>->num_rows;
            <span>for</span>(<span>$i</span>=<span>0</span>;<span>$i</span><<span>$num</span>;<span>$i</span>++){
                <span>$row</span> = <span>$table_msg</span>->fetch_assoc();
                dump(<span>$row</span>);
            }
            dump(<span>$dbObj</span>);
            dump(<span>$tables</span>);
            dump(<span>$table_msg</span>);
            <span>$res</span> = mysqli_close(<span>$dbObj</span>);
            dump(<span>$res</span>);*/
</code>
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上就介紹了MySQL資料庫操作類PHP實現,支援連貫操作,包括了Mysql資料庫方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn