Blogger Information
Blog 31
fans 0
comment 1
visits 24603
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
创建函数库文件,将数据库常用操作进行封装20180426
jobing的博客
Original
849 people have browsed it

以下代码将创建函数库文件,将数据库常用操作进行封装:包含对数据库的连接,新增,更新,单条查询,多条查询,删除的操作,与大家分享:

封装函数的代码:


实例

<?php 

// 连接数据库
if(!function_exists('connect'))
{
	function connect($dbname,$type='mysql',$host='127.0.0.1',$charset='utf8',$port=3306,$user='root')
	{
		$dsn = "{$type}:host={$host}; dbname={$dbname}; charset={$charset}; port={$port}";//数据源
		$userName = 'root';
		$password = 'root';

		//配置连接属性
        $options = [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,  //设置错误模式
            PDO::ATTR_CASE => PDO::CASE_NATURAL,  //数据表字段保持不变
            PDO::ATTR_EMULATE_PREPARES => true, //启用PDO模拟
            PDO::ATTR_PERSISTENT => true, //启用持久性连接
        ];

        try {
            //实例化PDO类,创建PDO对象
            $pdo = new PDO($dsn, $userName, $password, $options);
            

        } catch (PDOException $e) {
            die('Connect ERROR!:'.$e->getMessage());

        }

        return $pdo;
	}
}

//新增数据
if (!function_exists('insert')) {

    function insert($pdo, $table, $data=[])
    {
        //创建SQL语句
        $sql = "INSERT IGNORE {$table} SET ";
        foreach (array_keys($data) as $field) {
            $sql .= $field.'=:'.$field.', ';
        }
        //去掉尾部逗号,并添加分号结束
        $sql = rtrim(trim($sql),',').';';

        //创建PDO预处理对象
        $stmt = $pdo->prepare($sql);

        //绑定参数到预处理对象
        foreach ($data as $field => $value) {
            $stmt->bindValue(":{$field}",$value);
        }

        //执行新增操作
        if($stmt->execute()){
            if($stmt->rowCount()>0){
                return true;
            }
        } else {
            return false;
        }
    }
}

//更新数据
if (!function_exists('update')) {

    function update($pdo,$table,$data=[], $where='') {
        //创建SQL语句
        $sql = "UPDATE {$table} SET ";
        foreach (array_keys($data) as $field) {
            $sql .= $field.'=:'.$field.', ';
        }

        //去掉尾部逗号,并添加分号结束
        $sql = rtrim(trim($sql),',');

        //添加更新条件
        if(!empty($where)) {
            $sql .= ' WHERE '. $where;
        }else{
            exit('条件不能为空');
        }

        //创建PDO预处理对象
        $stmt = $pdo->prepare($sql);

        //绑定参数到预处理对象
        foreach ($data as $field => $value) {
            $stmt->bindValue(":{$field}",$value);
        }

        //执行新增操作
        if($stmt->execute()){
            if($stmt->rowCount()>0){
                return true;
            }
        } else {
            return false;
        }
    }
}

//查询单条数据
if (!function_exists('find')) {

    function find($pdo,$table,$fields, $where='') {
        //创建SQL语句
        $sql = 'SELECT ';
        if (is_array($fields)) {
            foreach ($fields as $field) {
                $sql .= $field.', ';
            }
        } else {
            $sql .= $fields;
        }
        $sql = rtrim(trim($sql),',');
        $sql .= '  FROM '.$table;
        //添加查询条件
        if(!empty($where)) {
            $sql .= '  WHERE '. $where;
        }
        $sql .= '  LIMIT 1';
        //去掉尾部逗号,并添加分号结束
        $sql = rtrim(trim($sql),',').';';

        //创建PDO预处理对象
        $stmt = $pdo->prepare($sql);

        //执行查询操作
        if($stmt->execute()){
            if($stmt->rowCount()>0){
                $stmt->setFetchMode(PDO::FETCH_ASSOC);
                return $stmt->fetch();
            }
        } else {
            return false;
        }
    }
}

//查询多条记录
if (!function_exists('select')) {
 
    function select($pdo,$table,$fields, $where='', $order='') {
        //创建SQL语句
        $sql = 'SELECT ';
        if (is_array($fields)) {
            foreach ($fields as $field) {
                $sql .= $field.', ';
            }
        } else {
            $sql .= $fields;
        }

        $sql = rtrim(trim($sql),',');
        $sql .= '  FROM '.$table;
        //添加查询条件
        if(!empty($where)) {
            $sql .= '  WHERE '. $where;
        }

        //添加排序条件
        if(!empty($order)) {
            $sql .= ' order by '.$order;
        }

        //去掉尾部逗号,并添加分号结束
        $sql = rtrim(trim($sql),',').';';

        //创建PDO预处理对象
        $stmt = $pdo->prepare($sql);

        //执行查询操作
        if($stmt->execute()){
            if($stmt->rowCount()>0){
                $stmt->setFetchMode(PDO::FETCH_ASSOC);
                //返回一个二维数组
                return $stmt->fetchAll();
            }
        } else {
            return false;
        }
    }
}

//删除数据
if (!function_exists('delete')) {

    function delete($pdo,$table, $where='') {
        //创建SQL语句
        $sql = "DELETE FROM {$table}  ";
        //添加删除条件
        if(!empty($where)) {
            $sql .= 'WHERE '. $where;
        }else{
            exit('条件不能为空');
        }
        //去掉尾部逗号,并添加分号结束
        $sql = rtrim(trim($sql),',').';';

        //创建PDO预处理对象
        $stmt = $pdo->prepare($sql);

        //执行删除操作
        if($stmt->execute()){
            if($stmt->rowCount()>0){
                return true;
            }
        } else {
            return false;
        }
    }
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

测试文件代码:

实例

<?php
// 封装函数的测试

//导入函数库
require 'lib/func_pdo.php';

//1.连接测试
$type='mysql';      //默认数据库驱动
$host='127.0.0.1';  //默认主机
$dbname='php';      //数据库名称
$charset='utf8';    //默认编码
$port=3306;         //默认端口
$user='root';       //用户名
$pass='root';       //用户密码
$pdo = connect($dbname,$type,$host,$charset,$port,$user,$pass);

//2.新增测试
// $table = 'staff';
// $data = ['name'=>'jobing','sex'=>0, 'age'=>30,'salary'=>7000];
// insert($pdo,$table,$data);


//3.更新测试
// $table = 'staff';
// $where='staff_id=11'; //查询条件使用字符串直接传入
// $data = ['name'=>'pzb','sex'=>1, 'age'=>31,'salary'=>7500];
// update($pdo,$table,$data,$where);

//4.单条查询测试
// $table = 'staff';
// $fields = ['name','salary'];
// $fields = 'name,salary';
// $where = 'salary > 7000';
// echo '<pre>'.print_r(find($pdo, $table, $fields, $where),true).'</pre>';

//5.多条查询测试
// $table = 'staff';
// $fields = ['name','salary'];
// // $fields = '*';
// $where = 'salary > 7000';
// $order = 'name asc';
// echo '<pre>'.print_r(select($pdo, $table, $fields, $where, $order),true).'</pre>';

//6.删除测试
$table = 'staff';
$where = 'name = "小龙女"';
delete($pdo, $table, $where);

运行实例 »

点击 "运行实例" 按钮查看在线实例

效果图:

源数据库图:

11.png

新增数据图:

22.png

更新数据图:

gx.png

单条查询图:

dcx.png

多条查询图:

ddcx.png

删除数据图:

de.png

总结:

将函数封装之后极大的方便了函数的调用,pdo封装的过程:

创建连接数据库的函数,增删改查都是建立在已经连接成功数据库的基础上;

创建增删改查的函数:创建SQL语句;去掉尾部逗号并添加分号结束;若有条件则添加对应的条件;创建PDO预处理对象;绑定参数到预处理对象;执行对应的操作。

备注:封装完成后,引用对应的封装文件,可直接调用封装好的函数,输入对应的参数即可。



Correction status:Uncorrected

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post