Blogger Information
Blog 59
fans 0
comment 1
visits 48406
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PDO函数封装:连接 新增 更新 单条查询 多条查询 删除操作进行封装—4月26日作业
白猫警长的博客
Original
755 people have browsed it

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


 ?>

运行实例 »

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



Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post