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

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

恋马辫角素敞河称崎画淀铜筷


修改fun_pdo.php

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

代码:

<?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.",";
        }
        die($sql);//设置断点查看数据
    }
}

修改demo.php

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

代码:

<?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);

执行:

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

需要将sql语句最后的逗号改为分号

修改库函数,添加如下代码:

//去除SQL语句左右的空格,再去除最后面的逗号  再加上分号
        $sql=rtrim(trim($sql),',').";";
        die($sql);//设置断点查看数据

执行:

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


数据表原始结构:

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

修改库函数

<?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;
        }
    }
}

执行demo.php

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

成功!

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


辽囱撼记祈钢冬挟猎叛侩肠纲