Correction status:qualified
Teacher's comments:
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; } } } ?>
点击 "运行实例" 按钮查看在线实例