博客列表 >PDO函数封装:连接 新增 更新 单条查询 多条查询 删除操作进行封装—4月26日作业

PDO函数封装:连接 新增 更新 单条查询 多条查询 删除操作进行封装—4月26日作业

白猫警长的博客
白猫警长的博客原创
2018年04月29日 21:35:47756浏览

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 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议