欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PDO之数据库常用函数的封装(4-16)-2018年5月7日17点

程序员文章站 2024-04-04 22:13:11
...

注意点:

数据库的连接,增删查改参数的条件使用及语句的拼接,需测试语句是否完整一避免php报错。

数据库操作函数库测试脚本

<?php 
/**
 * 数据库操作函数库测试脚本
 */
//1,连接测试
// $dbname,$type='mysql',$host='127.0.0.1',$charset='utf8',$port=3306,$user='root',$pass='root'
require 'lib/func_pdo.php';
$type='mysql';
$host='127.0.0.1';
$dbname='php';
$charset='utf8';
$port=3306;
$user='root';
$pass='root';
$pdo =connect($dbname,$type,$host,$charset,$port,$user,$pass);

//2,新增测试
// $table='perm';
// $data=['name'=>'noc','value'=>'AAc'];
// insert($pdo,$table,$data);

//3,更新测试
// $table='perm';
// $data=['name'=>'noc','value'=>'BBB'];
// $where='id=26';
// update($pdo,$table,$data,$where);

//4,单条查询测试
// $table ='perm';
// $fields=['name','value'];
// $fields='*';
// $fields='name,value';
// $where='id<40';

// echo '<pre>'.print_r(find($pdo,$table,$fields,$where),true).'</pre>';


//4,多条查询测试
// $table ='perm';
// $fields=['name','value'];
// $fields='*';
// $fields='name,value';
// $where='id<10';
// $order='id ASC';
// echo '<pre>'.print_r(select($pdo,$table,$fields,$where,$order),true).'</pre>';

//5,删除测试
$table ='perm';
$where='id = 69';
delete($pdo,$table,$where);

PDO数据库操作函数库:


<?php 
/*******PDO数据库操作函数库*******/
//连接数据库
if(!function_exists('connect')){
	/**
	 * 连接数据库
	 * @param  [type]  $dbname  [description]
	 * @param  string  $type    [description]
	 * @param  string  $host    [description]
	 * @param  string  $charset [description]
	 * @param  integer $port    [description]
	 * @return [type]           [description]
	 */
	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);
            // echo 'ok';
        } catch (PDOException $e) {
            print('连接错误'.$e->getMessage());
            die();
        }
        return $pdo;
	}}

//新增数据
if(!function_exists('insert')){
	/**
	 * 新增数据
	 * @param  [type] $pdo   [description]
	 * @param  [type] $table [description]
	 * @param  array  $data  [description]
	 * @return [type]        [description]
	 */
	function insert($pdo,$table,$data=[])
	{
		// 创建SQL语句
		// insert ignore staff set name =:name,salary=:salary
		
		$sql ="INSERT IGNORE {$table} SET ";
		foreach (array_keys($data) as $field) {
			$sql.=$field.'=:'.$field.',';
		}
		$sql=rtrim(trim($sql),',').';';
		// die($sql);
		//INSERT IGNORE perm SET name=:name,value=:value,
		
		//创建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 false;
			}
		}		
	}}

//更新操作
if(!function_exists('update')){
	/**
	 * 更新数据
	 * [update description]
	 * @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.',';
		}
		$sql=rtrim(trim($sql),',');

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


		// die($sql);
		//INSERT IGNORE perm SET name=:name,value=:value,
		
		//创建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 false;
			}
		}		
	}}

//查询单条操作
if(!function_exists('find')){
	/**
	 * 查询单条语句
	 * @param  [type] $pdo    [description]
	 * @param  [type] $table  [description]
	 * @param  [type] $fields [description]
	 * @param  string $where  [description]
	 * @return [type]         [description]
	 */
	function find($pdo,$table,$fields,$where='')
	{
		// 创建SQL语句
		// select name,value from prem where ;
		$sql ="SELECT ";
		if (is_array($fields)){
			foreach($fields as $field){
				$sql .=$field. ',';
				}
			}else{
				$sql .=$fields. ',';
			}
			$sql= rtrim(trim($sql),',');

			$sql .=' FROM '.$table;

			if(!empty($where)){
				$sql .=' WHERE '.$where;
			}
			$sql .=' LIMIT 1';
			$sql= rtrim(trim($sql),',').';';

			// die($sql);

			//创建STMT对象
			$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]
	 * @return [type]         [description]
	 */
	function select($pdo,$table,$fields,$where='',$oder='')
	{
		// 创建SQL语句
		// select name,value from prem where ;
		$sql ="SELECT ";
		if (is_array($fields)){
			foreach($fields as $field){
				$sql .=$field. ',';
				}
			}else{
				$sql .=$fields. ',';
			}
			$sql= rtrim(trim($sql),',');

			$sql .=' FROM '.$table;

			if(!empty($where)){
				$sql .=' WHERE '.$where;
			}
			if(!empty($oder)){
				$sql .=' ORDER BY '.$oder;
			}
			$sql= rtrim(trim($sql),',').';';

			// die($sql);

			//创建STMT对象
			$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')){
	/**
	 * 删除数据
	 * [update description]
	 * @param  [type] $pdo   [description]
	 * @param  [type] $table [description]
	 * @param  array  $data  [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('条件不能为空');
		}


		// die($sql);
		//INSERT IGNORE perm SET name=:name,value=:value,
		
		//创建stmt对象
		$stmt = $pdo ->prepare($sql);

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