12-3库封装之更新操作–PHP实战开发教程

12-3库封装之更新操作–PHP实战开发教程

体梧猴斗躬势量片强垫唯替膳


修改库函数

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

//连接数据库
if(!function_exists('connect'))//如果函数connect不存在
{
    /**数据库连接
     * @param $dbname
     * @param string $type
     * @param string $host
     * @param string $charset
     * @param int $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模拟
            PDO::ATTR_PERSISTENT => true, //启用持久性连接
        ];

        //使用try-catch()来捕获可能发生的错误
        try{
            $pdo=new PDO($dsn,$username,$password,$options);
            //一般情况这里还有throw(抛出)错误信息,但是这里不用,因为第4个参数已经强制抛出错误了
        }catch(PDOException $e)
        {
            echo "连接错误:".$e->getMessage();
            die();//连接错误是致命错误,必须停止脚本的执行


        }

        return $pdo;//返回pdo对象
    }
}

//新增数据
if(!function_exists('insert'))
{
    /**新增数据
     * @param $pdo
     * @param $table
     * @param array $data
     */
    function insert($pdo,$table,$data=[])
    {
        //创建sql语句
        //目标sql语句类似:insert ignore staff set name=:name,salary=:salary
        $sql="insert ignore staff set ";

//        遍历数组,将数组的键作为占位符
        foreach (array_keys($data) as $field)
        {
            $sql.=$field."=:".$field.",";
        }
        //去除SQL语句左右的空格,再去除最后面的逗号  再加上分号
        $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 flase;
        }
    }
}

//更新数据
if(!function_exists('update'))
{
    /**更新数据
     * @param $pdo
     * @param $table
     * @param array $data
     * @param string $where
     * @return bool
     */
    function update($pdo,$table,$data=[],$where='')
    {
        //创建sql语句
        //目标sql语句类似:insert ignore staff set name=:name,salary=:salary
        $sql="update staff set ";

//        遍历数组,将数组的键作为占位符
        foreach (array_keys($data) as $field)
        {
            $sql.=$field."=:".$field.",";
        }
        //去除SQL语句左右的空格,再去除最后面的逗号
        $sql=rtrim(trim($sql),',');

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

        die($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 flase;
        }
    }
}

修改demo.php

<?php
/**
 * 数据库操作函数库测试脚本
 */
require "lib/func_pdo.php";//引入库函数

//1.连接测试
$dbname="myuser";
$type="mysql";
$host="127.0.0.1";
$charset="utf8";
$port=3306;
$user="root";
$pass="root";
$pdo=connect($dbname,$type,$host,$charset,$port,$user,$pass);

//2.新增测试
//$table="staff";
//$data=['name'=>'mengmianren','sex'=>0,'age'=>22,'salary'=>4000];
//insert($pdo,$table,$data);

//3.更新测试
$table="staff";
$data=['name'=>'萌面人','sex'=>0,'age'=>44,'salary'=>8000];
$where = "staff_id=60";
update($pdo,$table,$data,$where);

执行:

12-3库封装之更新操作–PHP实战开发教程第1张


数据表结构,目标修改用户信息如下:

12-3库封装之更新操作–PHP实战开发教程第2张

库函数:

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

//连接数据库
if(!function_exists('connect'))//如果函数connect不存在
{
    /**数据库连接
     * @param $dbname
     * @param string $type
     * @param string $host
     * @param string $charset
     * @param int $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模拟
            PDO::ATTR_PERSISTENT => true, //启用持久性连接
        ];

        //使用try-catch()来捕获可能发生的错误
        try{
            $pdo=new PDO($dsn,$username,$password,$options);
            //一般情况这里还有throw(抛出)错误信息,但是这里不用,因为第4个参数已经强制抛出错误了
        }catch(PDOException $e)
        {
            echo "连接错误:".$e->getMessage();
            die();//连接错误是致命错误,必须停止脚本的执行


        }

        return $pdo;//返回pdo对象
    }
}

//新增数据
if(!function_exists('insert'))
{
    /**新增数据
     * @param $pdo
     * @param $table
     * @param array $data
     */
    function insert($pdo,$table,$data=[])
    {
        //创建sql语句
        //目标sql语句类似:insert ignore staff set name=:name,salary=:salary
        $sql="insert ignore staff set ";

//        遍历数组,将数组的键作为占位符
        foreach (array_keys($data) as $field)
        {
            $sql.=$field."=:".$field.",";
        }
        //去除SQL语句左右的空格,再去除最后面的逗号  再加上分号
        $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 flase;
        }
    }
}

//更新数据
if(!function_exists('update'))
{
    /**更新数据
     * @param $pdo
     * @param $table
     * @param array $data
     * @param string $where
     * @return bool
     */
    function update($pdo,$table,$data=[],$where='')
    {
        //创建sql语句
        //目标sql语句类似:insert ignore staff set name=:name,salary=:salary
        $sql="update staff set ";

//        遍历数组,将数组的键作为占位符
        foreach (array_keys($data) as $field)
        {
            $sql.=$field."=:".$field.",";
        }
        //去除SQL语句左右的空格,再去除最后面的逗号
        $sql=rtrim(trim($sql),',');

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

        //去除SQL语句左右的空格,再去除最后面的逗号  再加上分号
        $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 flase;
        }
    }
}

demo.php

<?php
/**
 * 数据库操作函数库测试脚本
 */
require "lib/func_pdo.php";//引入库函数

//1.连接测试
$dbname="myuser";
$type="mysql";
$host="127.0.0.1";
$charset="utf8";
$port=3306;
$user="root";
$pass="root";
$pdo=connect($dbname,$type,$host,$charset,$port,$user,$pass);

//2.新增测试
//$table="staff";
//$data=['name'=>'mengmianren','sex'=>0,'age'=>22,'salary'=>4000];
//insert($pdo,$table,$data);

//3.更新测试
$table="staff";
$data=['name'=>'萌面人','sex'=>0,'age'=>44,'salary'=>8000];
$where = "staff_id=60";
update($pdo,$table,$data,$where);

执行:

12-3库封装之更新操作–PHP实战开发教程第3张

数据成功更新:

12-3库封装之更新操作–PHP实战开发教程第4张


奔疵矾崔竿昆榷舞嗣吵膊餐锨