Blogger Information
Blog 43
fans 3
comment 1
visits 30255
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PDO查询与常用操作的封装+2018年5月1日17时33分
KongLi的博客
Original
757 people have browsed it

使用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);


Correction status:qualified

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