博客列表 >PDO查询与常用操作的封装+2018年5月1日17时33分

PDO查询与常用操作的封装+2018年5月1日17时33分

KongLi的博客
KongLi的博客原创
2018年05月01日 17:33:16763浏览

使用PDO 对增、删、改、查进行简单的代码封装处理,以此来实现代码的利用性,其中,增、删、改返回受影响的行数,

查询则返回结果集数组,具体如下:


PHP 封装函数:

<?php
/**
 * Created by PhpStorm.
 * User: John
 * Date: 2018/5/1
 * Time: 13:28
 * PDO 数据库操作封装函数库
 */

//ConnectDB 连接数据库 返回 PDO 连接对象
if(!function_exists('connect')){

    /**
     * Connect PDO
     * @param $db_host
     * @param $db_name
     * @param $db_user
     * @param $db_pass
     * @param $db_port
     */
    function connect($db_host,$db_name,$db_user,$db_pass,$db_port)
    {
        //创建数据源
        $type='mysql';
        $charset='utf8';
        $dsn="{$type}:host={$db_host};dbname={$db_name};charset={$charset};port={$db_port}";

        //配置连接属性
        $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 = new PDO($dsn,$db_user,$db_pass,$options);

        }catch (PDOException $e){
            //抛出异常
            die('Connect Error!:'.$e->getMessage());
        }
        return $pdo;
    }
}

//Insert 插入数据 返回成功的条数
if(!function_exists('insert')){

    /**
     * insert data
     * @param $pdo
     * @param $table
     * @param array $data
     */
    function insert($pdo,$table,$data=[])
    {
        //create sql
        $sql = "INSERT IGNORE {$table} SET ";
        foreach (array_keys($data) as $field){
            $sql .=$field.'=:'.$field.',';
        }
        //die($sql);
        $sql=rtrim(trim($sql),',').';';
        //die($sql);

        //create stmt
        $stmt = $pdo->prepare($sql);

        //bind parameters stmt
        foreach ($data as $field => $value){
            $stmt->bindValue(":{$field}",$value);
        }

        //execute sql
        if($stmt->execute()){
            if($stmt->rowCount()>0){
                return true;
            }else{
                return false;
            }
        }
        return rowCount();
    }
}

//Delete 删除数据 返回受影响的行数
if(!function_exists('delete')){

    /**
     * @param $pdo
     * @param $table
     * @param $where
     * @return bool
     */
    function delete($pdo,$table,$where)
    {
        //create sql
        $sql = "DELETE FROM {$table} ";

        //exists where is Empty
        if(!empty($where)){
            $sql .= ' WHERE '.$where.';';
        }else{
            exit('Where Empty!');
        }

        //create stmt
        $stmt = $pdo->prepare($sql);
        //die($sql);

        //execute sql
        if($stmt->execute()){
            if($stmt->rowCount()>0){
                return true;
            }else{
                return false;
            }
        }
        return rowCount();
    }
}

//Update 更新数据 返回受影响的行数
if(!function_exists('update')){

    /**
     * @param $pdo
     * @param $table
     * @param array $data
     * @param string $where
     * @return bool
     */
    function update($pdo,$table,$data=[],$where)
    {
        //create sql
        $sql = "UPDATE {$table} SET ";

        foreach (array_keys($data) as $field){
            $sql .=$field.'=:'.$field.',';
        }

        $sql=rtrim(trim($sql),',');

        //exists where is Empty
        if(!empty($where)){
            $sql .= ' WHERE '.$where.';';
        }else{
            exit('Where Empty!');
        }

        //die($sql);

        //create stmt
        $stmt = $pdo->prepare($sql);

        //bind parameters stmt
        foreach ($data as $field => $value){
            $stmt->bindValue(":{$field}",$value);
        }

        //die($sql);

        //execute sql
        if($stmt->execute()){
            if($stmt->rowCount()>0){
                return true;
            }else{
                return false;
            }
        }
        return rowCount();
    }
}

//Query 查询单条数据 返回结果集
if(!function_exists('query')){

    /**
     * @param $pdo
     * @param $table
     * @param $finelds
     * @param $where
     * @return bool
     */
    function query($pdo,$table,$finelds,$where)
    {
        $sql="SELECT ";
        //判断是否数组,如果是则循环,并且将读出的字段进行拼接
        if(is_array($finelds)){
            foreach ($finelds as $field){
                $sql .=$field.',';
            }
        }else{
            $sql .=$finelds.',';
        }

        //去除右边最后一个逗号
        $sql =rtrim(trim($sql),',');

        //判断查询条件是否为空
        if(!empty($where)){
            $sql .= ' FROM '.$table.' WHERE '.$where.' LIMIT 1'.';';
        }else{
            exit('没有查询条件!');
        }

        //die($sql);
        //create stmt
        $stmt=$pdo->prepare($sql);

        //execute query
        if($stmt->execute()){
            //如果结果集里的数据大于0 则存在数据,并设置数据的模式返回
            if($stmt->rowCount()>0){
                $stmt->setFetchMode(PDO::FETCH_ASSOC);
                return $stmt->fetch();
            }
        }else{
            return false;
        }

    }
}

//Query All 查询多条数据 返回结果集
if(!function_exists('queryall')){


    function queryall($pdo,$table,$finelds,$where,$order)
    {
        $sql="SELECT ";
        //判断是否数组,如果是则循环,并且将读出的字段进行拼接
        if(is_array($finelds)){
            foreach ($finelds as $field){
                $sql .=$field.',';
            }
        }else{
            $sql .=$finelds.',';
        }

        //去除右边最后一个逗号
        $sql =rtrim(trim($sql),',');

        //判断查询条件是否为空
        if(!empty($where)){
            $sql .= ' FROM '.$table.' WHERE '.$where;
        }else{
            exit('没有查询条件!');
        }

        //判断排序条件是否为空
        if(!empty($order)){
            $sql .=' ORDER BY '.$order.';';
        }

        //die($sql);
        //create stmt
        $stmt=$pdo->prepare($sql);

        //execute query
        if($stmt->execute()){
            //如果结果集里的数据大于0 则存在数据,并设置数据的模式返回
            if($stmt->rowCount()>0){
                $stmt->setFetchMode(PDO::FETCH_ASSOC);
                //返回所有
                return $stmt->fetchAll();
            }
        }else{
            return false;
        }
    }
}


测试部分:

<?php
/**
 * Created by PhpStorm.
 * User: John
 * Date: 2018/5/1
 * Time: 14:02
 */

//测试数据库连接

require 'lib/func_pdo.php';

//Connect PDO
$pdo=connect('127.0.0.1','php','root','root','3306');

//insert
//$table='staff';
//$data=['name'=>'小刘','sex'=>0,'age'=>30,'salary'=>3000];
//$rowCount=insert($pdo,$table,$data);
//if($rowCount>0){
//    echo '插入数据成功!共:'.$rowCount.'条数据!';
//}else{
//    echo '插入失败!';
//}

//delete
//$table='staff';
//$where="name='小刘'";
//$rowCount=delete($pdo,$table,$where);
//if($rowCount>0){
//    echo '删除数据成功!共:'.$rowCount.'条数据!';
//}else{
//    echo '删除失败!';
//}

//update
//$table='staff';
//$data=['name'=>'小刘','sex'=>0,'age'=>30,'salary'=>9800];
//$where="name='小刘'";
//$rowCount=update($pdo,$table,$data,$where);
//if($rowCount>0){
//    echo '更新数据成功!共:'.$rowCount.'条数据!';
//}else{
//    echo '更新失败!';
//}

//query
//查询共有几种情况, 1.多字段 2.查询所有 3.查询条件
//$table='staff';
//$fields=['name','age','salary'];
//$fields='*';
//$fields='name,salary';
//$where = 'salary < 3000';
//$array=query($pdo,$table,$fields,$where);
//echo '<pre>';
//print_r($array);

//queryall
//$table='staff';
//$fields=['name','age','salary'];
//$fields='*';
//$fields='name,salary';
//$where = 'salary > 5000';
//$order='age ASC'; //ASC 从小到大  DESC 从大到小
//$array=queryall($pdo,$table,$fields,$where,$order);
//echo '<pre>';
//print_r($array);


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议