博客列表 >4月26日作业——数据库操作函数库的封装

4月26日作业——数据库操作函数库的封装

时光记忆的博客
时光记忆的博客原创
2018年04月27日 14:29:34864浏览

封装数据库操作函数库(连接数据库,查询,插入,更新,删除)。调用函数即可完成操作

数据库连接函数:connect()函数

connect( $dbname,$type='mysql',$host='127.0.0.1', $charset='utf8', $port=3306,$user='root',$pass='root')

实例

<?php
/**
 * PDO数据库操作函数库
 */

//1.连接数据库
if (!function_exists('connect'))
{

    /**
     * 数据库连接
     * @param $dbname
     * @param string $type
     * @param string $host
     * @param string $charset
     * @param string $port
     */
    function connect( $dbname,$type='mysql',$host='127.0.0.1', $charset='utf8', $port=3306,$user='root',$pass='root')
    {
        $dsn = "{$type}:host={$host}; dbname={$dbname}; charset={$charset}; port={$port}";
        $userName = $user;
        $password = $pass;
        $options = [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, //错误模式
            PDO::ATTR_CASE => PDO::CASE_NATURAL, //自然名称
            PDO::ATTR_EMULATE_PREPARES => true, //启用模拟功能
            PDO::ATTR_PERSISTENT => true, //启用持久性连接
        ];

        try{
            //实例化PDO类,创建PDO对象
            $pdo = new PDO($dsn, $userName, $password, $options);
//            echo '<h1>连接成功</h1>';
        }catch (PDOException $e){
            die('连接错误'.$e->getMessage());
        }
        return $pdo;
    }
}

$type='mysql';
$host='127.0.0.1';
$dbname = 'php';
$charset='utf8';
$port=3306;
$user = 'root';
$pass = 'root';

//1.连接测试
$pdo = connect($dbname,$type,$host,$charset,$port,$user,$pass);

运行实例 »

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


数据库查询函数库封装:find()函数

find($pdo, $table, $fields, $where='')  :  传入参数为$pdo连接,表名,查询的字段名,条件。即可返回查询到的结果数组 

实例

//1.查询单条语句
<?php
if(!function_exists('find')){
    /**
     * @param $pdo
     * @param $table
     * @param $fields
     * @param string $where
     * @return bool
     */
    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'.';';

        //创建STMT对象
        $stmt = $pdo->prepare($sql);

        if($stmt->execute()){
            if($stmt->rowCount()){
                $stmt->setFetchMode(PDO::FETCH_ASSOC);
                return $stmt->fetch();
            }
        }else{
            return false;
        }
    }
}

////////////////////
$table ='staff';
$fields = ['name', 'age', 'salary'];
//$fields = '*';
//$fields = 'name, salary';
$where = 'age < 60';

echo '<pre>'.print_r(find($pdo, $table, $fields, $where), true).'</pre>';

运行实例 »

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

2.查询多条语句

实例

<php
if(!function_exists('findAll')){

   function findAll($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;
       }
   }
}

//4.多条查询测试
$table ='staff';
$fields = ['name', 'age', 'salary'];
$fields = '*';
$fields = 'name, salary';
$where = 'age < 60';
$order = 'age ASC';

echo '<pre>'.print_r(findAll($pdo, $table, $fields, $where, $order),true).'</pre>';

运行实例 »

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

新增操作:insert()函数

实例

<?php
if (!function_exists('insert')) {
    /**
     * 新增数据
     * @param $pdo
     * @param $table
     * @param $data
     * @return bool
     */
    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;
        }
    }
}

$table = 'staff';
$data =[
    'name' => '张飞',
    'sex' => '男',
    'age' => '23',
    'salary' => '5200'
];

insert($pdo, $table, $data);

运行实例 »

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

更新函数:update();

实例

<?php
//3.更新操作
if(!function_exists('update')){
    /**
     * @param $pdo
     * @param $table
     * @param array $data
     */
    function update($pdo, $table, $data=[], $where='')
    {
        //创建SQL语句
        $sql = "UPDATE IGNORE {$table} SET ";
        foreach(array_keys($data) as $field){
            $sql .=$field.' =:'.$field.',';
        }
        $sql = rtrim(trim($sql), ',');
//        die($sql);

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

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

        //创建stmt对象
        $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;
        }
    }
}

////////////////////
$table = 'staff';
$data =[
    'name' => '吕布',
    'sex' => '男',
    'age' => '73',
    'salary' => '5200'
];

$where = 'staff_id=12';
update($pdo, $table, $data, $where);

运行实例 »

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

删除操作:delete()函数

实例

<?php
//6.删除操作
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), ',').';';

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

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

////////////////////
//5.执行删除
$table = 'staff';
$where = 'staff_id = 30';
delete($pdo, $table,  $where);

//unset($pdo);
$pdo = null;

运行实例 »

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


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