博主信息
博文 59
粉丝 0
评论 1
访问量 58041
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PDO函数封装:连接 新增 更新 单条查询 多条查询 删除操作进行封装—4月26日作业
白猫警长的博客
原创
927人浏览过

PDO函数封装:连接 新增 更新 单条查询 多条查询 删除操作

实例

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

//连接数据库
if (!function_exists('connect'))	//检测connect函数是否存在(或被定义)是继续执行
{	
	/**
	 * 连接数据库
	 * @param  [type] $dbname
	 * @param  string $type
	 * @param  string $host
	 * @param  string $charset
	 * @param  integer $post
	 * @param  string $user
	 * @param  string $pass
	 * @return [type] PDO
	 */
	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 {
            //实例化PDO类,创建PDO对象
            $pdo = new PDO($dsn, $userName, $password, $options);
        } catch (PDOException $e) {
            die('Connect ERROR!:'.$e->getMessage());
        }

        return $pdo;
    }
}


//新增数据
if (!function_exists('insert'))
{	
	/**
	 * [insert description]
	 * @param  [type] $pdo
	 * @param  [type] $table
	 * @param  array  $data
	 * @return [type] bool 
	 */
	function insert($pdo,$table,$data=[])
	{
		//创建SQL语句
		$sql = "INSERT IGNORE {$table} SET ";
		//foreach()方法用于调用数组的每个元素,并将元素传递给回调函数
		//循环迭代,$data数组元素的值就会被赋值给 $field变量,并且数组指针会逐一地移动,直到最后一个数组元素。
		foreach (array_keys($data) as $field) {
			$sql .= $field. '=:'.$field.',';
		}
		//去掉尾部的逗号,并添加分号结束
		$sql = rtrim(trim($sql),',').';';
		// die($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;
		}
	}
}

//更新数据
if (!function_exists('update')) 
{
	/**
	 * 更新数据
	 * @param  [type] $pdo   [description]
	 * @param  [type] $table [description]
	 * @param  array  $data  [description]
	 * @param  string $where [description]
	 * @return [type]        [description]
	 */
	function update($pdo,$table,$data=[],$where='')
	{
		//创建SQL语句
		$sql = "UPDATE {$table} SET ";
		foreach (array_keys($data) as $field) {
            $sql .= $field.'=:'.$field.', ';
        }
         //rtrim() 函数移除字符串右侧的空白字符或其他预定义字符。
         //去掉尾部逗号,并添加分号结束
         $sql = rtrim(trim($sql),',');
        // die($sql); 测试用

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

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

        //绑定参数到预处理语句
        foreach ($data as $field => $value) {
        	$stmt->bindValue(":{$field}",$value);
        }

        //执行更新操作
        if ($stmt->execute()) {
        	//rowCount()方法获取sql查询返回结果记录总条数
        	if ($stmt->rowCount() > 0) {
        		return true;
        	}
        } else {
        	return false;
        }
    }
}

//查询单条数据
if (!function_exists('find'))
{
	/**
	 * 查询单条数据
	 * @param  [type] $pdo    [description]
	 * @param  [type] $table  [description]
	 * @param  [type] $fields [description]
	 * @param  string $where  [description]
	 * @return [type] bool    [description]
	 */
	function find($pdo,$table,$fields,$where='')
	{
		//创建SQL语句
		$sql = "SELECT ";
		if (is_array($fields)) {
			foreach ($fields as $field) {
			$sql .= $field.', ';
			}
		} else {
			$sql .= $fields;
		}
		 //去掉$fieds后面的逗号
		$sql = rtrim(trim($sql),',');
		$sql .= ' FROM '.$table;
		
		//添加查询条件
		if(!empty($where)) {
            $sql .= '  WHERE '. $where;
        }
        $sql .= '  LIMIT 1';
        //去掉尾部逗号,并添加分号结束
        $sql = rtrim(trim($sql),',').';';

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

			//执行查询操作
		if($stmt->execute()){
            if($stmt->rowCount()>0){
                $stmt->setFetchMode(PDO::FETCH_ASSOC);
                return $stmt->fetch();
            }
        } else {
            return false;
			}
	}
}

//查询多条数据
if(!function_exists('select'))
{
	/**
	 * 查询多条数据
	 * @param  [type] $pdo    [description]
	 * @param  [type] $table  [description]
	 * @param  [type] $fields [description]
	 * @param  string $where  [description]
	 * @param  string $order  [description]
	 * @return [type]         [description]
	 */
	function select($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;		//FROM关键词查询的是数据库中的表名
		
		//添加查询条件
		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;
		}
	}
}


//删除数据
if(!function_exists('delete'))
{
	/**
	 * 删除数据
	 * @param  [type] $pdo   [description]
	 * @param  [type] $table [description]
	 * @param  string $where [description]
	 * @return [type]        [description]
	 */
	function delete($pdo,$table,$where='') {
		//创建SQL语句
		$sql = "DELETE FROM {$table} ";

		//添加删除条件
		if(!empty($where)) {
			$sql .= ' WHERE '.$where;
		} else {
			exit('条件不能为空');
		}
		//去掉尾部的逗号,并添加分号结束
		 $sql = rtrim(trim($sql,',').';');

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

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


 ?>

运行实例 »

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



批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学