12-4库封装之单条查询操作–PHP实战开发教程

12-4库封装之单条查询操作–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('更新条件不能为空!');
        }

        //去除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('find'))
{

    function find($pdo,$table,$fields,$where='')
    {
        //$fields:字段列表,sql语句类似:select name,salary from staff where
        //name,salary即为字段
        //创建sql语句
        //目标sql语句类似:select name,salary from staff where
        $sql="select ";
        if(is_array($fields))//如果是数组,遍历数组拼接sql语句
        {
            foreach($fields as $field)
            {
                $sql .= $field . ",";
            }
        }
        else//如果不是数字,是字符串,直接拼接SQL语句
        {
            $sql .= $fields . ",";
        }
        die($sql);

    }
}

修改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);

//4.单条查询测试
$table="staff";
//单条查询需要能够处理以下方式提交的字段信息
$fields=['name','age','salary'];
$fields="*";
$fields="name,age,salary";
$where = "age < 40";
find($pdo,$table,$fields,$where);


执行:

12-4库封装之单条查询操作–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.",";
        }
        //去除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;
        }
    }
}

//查询单条记录 注意:只查询当前表中满足条件的第一条记录
if(!function_exists('find'))
{

    function find($pdo,$table,$fields,$where='')
    {
        //$fields:字段列表,sql语句类似:select name,salary from staff where
        //name,salary即为字段
        //创建sql语句
        //目标sql语句类似:select name,salary from staff where
        $sql="select ";
        if(is_array($fields))//如果是数组,遍历数组拼接sql语句
        {
            foreach($fields as $field)
            {
                $sql .= $field . ",";
            }
        }
        else//如果不是数字,是字符串,直接拼接SQL语句
        {
            $sql .= $fields . ",";
        }
        //去除SQL语句左右的空格,再去除最后面的逗号
        $sql=rtrim(trim($sql),',');
        $sql.=" from ".$table;
        if(!empty($where))
        {
            $sql.=" where ".$where." limit 1";//只查询单条数据
        }
        //去除SQL语句左右的空格,再去除最后面的逗号  再加上分号
        $sql=rtrim(trim($sql),',').";";

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

        //执行sql语句
        if($stmt->execute())
        {
            if($stmt->rowCount()>0)
            {
                $stmt->setFetchMode(PDO::FETCH_ASSOC);
                return $stmt->fetch();//成功则返回结果集的数组
            }
        }
        else
        {
            return false;
        }

    }
}

修改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);

//4.单条查询测试
$table="staff";
//单条查询需要能够处理以下方式提交的字段信息
$fields=['name','age','salary'];
$fields="*";
$fields="name,age,salary";
$where = "age < 40";
echo "<pre/>";
print_r(find($pdo,$table,$fields,$where));


执行:

12-4库封装之单条查询操作–PHP实战开发教程第2张


修片捅腥衬坏蒜夯峡罐枢骗将