Correction status:qualified
Teacher's comments:
使用PDO 对增、删、改、查进行简单的代码封装处理,以此来实现代码的利用性,其中,增、删、改返回受影响的行数,
查询则返回结果集数组,具体如下:
PHP 封装函数:
<?php /** * Created by PhpStorm. * User: John * Date: 2018/5/1 * Time: 13:28 * PDO 数据库操作封装函数库 */ //ConnectDB 连接数据库 返回 PDO 连接对象 if(!function_exists('connect')){ /** * Connect PDO * @param $db_host * @param $db_name * @param $db_user * @param $db_pass * @param $db_port */ function connect($db_host,$db_name,$db_user,$db_pass,$db_port) { //创建数据源 $type='mysql'; $charset='utf8'; $dsn="{$type}:host={$db_host};dbname={$db_name};charset={$charset};port={$db_port}"; //配置连接属性 $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 = new PDO($dsn,$db_user,$db_pass,$options); }catch (PDOException $e){ //抛出异常 die('Connect Error!:'.$e->getMessage()); } return $pdo; } } //Insert 插入数据 返回成功的条数 if(!function_exists('insert')){ /** * insert data * @param $pdo * @param $table * @param array $data */ function insert($pdo,$table,$data=[]) { //create sql $sql = "INSERT IGNORE {$table} SET "; foreach (array_keys($data) as $field){ $sql .=$field.'=:'.$field.','; } //die($sql); $sql=rtrim(trim($sql),',').';'; //die($sql); //create stmt $stmt = $pdo->prepare($sql); //bind parameters stmt foreach ($data as $field => $value){ $stmt->bindValue(":{$field}",$value); } //execute sql if($stmt->execute()){ if($stmt->rowCount()>0){ return true; }else{ return false; } } return rowCount(); } } //Delete 删除数据 返回受影响的行数 if(!function_exists('delete')){ /** * @param $pdo * @param $table * @param $where * @return bool */ function delete($pdo,$table,$where) { //create sql $sql = "DELETE FROM {$table} "; //exists where is Empty if(!empty($where)){ $sql .= ' WHERE '.$where.';'; }else{ exit('Where Empty!'); } //create stmt $stmt = $pdo->prepare($sql); //die($sql); //execute sql if($stmt->execute()){ if($stmt->rowCount()>0){ return true; }else{ return false; } } return rowCount(); } } //Update 更新数据 返回受影响的行数 if(!function_exists('update')){ /** * @param $pdo * @param $table * @param array $data * @param string $where * @return bool */ function update($pdo,$table,$data=[],$where) { //create sql $sql = "UPDATE {$table} SET "; foreach (array_keys($data) as $field){ $sql .=$field.'=:'.$field.','; } $sql=rtrim(trim($sql),','); //exists where is Empty if(!empty($where)){ $sql .= ' WHERE '.$where.';'; }else{ exit('Where Empty!'); } //die($sql); //create stmt $stmt = $pdo->prepare($sql); //bind parameters stmt foreach ($data as $field => $value){ $stmt->bindValue(":{$field}",$value); } //die($sql); //execute sql if($stmt->execute()){ if($stmt->rowCount()>0){ return true; }else{ return false; } } return rowCount(); } } //Query 查询单条数据 返回结果集 if(!function_exists('query')){ /** * @param $pdo * @param $table * @param $finelds * @param $where * @return bool */ function query($pdo,$table,$finelds,$where) { $sql="SELECT "; //判断是否数组,如果是则循环,并且将读出的字段进行拼接 if(is_array($finelds)){ foreach ($finelds as $field){ $sql .=$field.','; } }else{ $sql .=$finelds.','; } //去除右边最后一个逗号 $sql =rtrim(trim($sql),','); //判断查询条件是否为空 if(!empty($where)){ $sql .= ' FROM '.$table.' WHERE '.$where.' LIMIT 1'.';'; }else{ exit('没有查询条件!'); } //die($sql); //create stmt $stmt=$pdo->prepare($sql); //execute query if($stmt->execute()){ //如果结果集里的数据大于0 则存在数据,并设置数据的模式返回 if($stmt->rowCount()>0){ $stmt->setFetchMode(PDO::FETCH_ASSOC); return $stmt->fetch(); } }else{ return false; } } } //Query All 查询多条数据 返回结果集 if(!function_exists('queryall')){ function queryall($pdo,$table,$finelds,$where,$order) { $sql="SELECT "; //判断是否数组,如果是则循环,并且将读出的字段进行拼接 if(is_array($finelds)){ foreach ($finelds as $field){ $sql .=$field.','; } }else{ $sql .=$finelds.','; } //去除右边最后一个逗号 $sql =rtrim(trim($sql),','); //判断查询条件是否为空 if(!empty($where)){ $sql .= ' FROM '.$table.' WHERE '.$where; }else{ exit('没有查询条件!'); } //判断排序条件是否为空 if(!empty($order)){ $sql .=' ORDER BY '.$order.';'; } //die($sql); //create stmt $stmt=$pdo->prepare($sql); //execute query if($stmt->execute()){ //如果结果集里的数据大于0 则存在数据,并设置数据的模式返回 if($stmt->rowCount()>0){ $stmt->setFetchMode(PDO::FETCH_ASSOC); //返回所有 return $stmt->fetchAll(); } }else{ return false; } } }
测试部分:
<?php /** * Created by PhpStorm. * User: John * Date: 2018/5/1 * Time: 14:02 */ //测试数据库连接 require 'lib/func_pdo.php'; //Connect PDO $pdo=connect('127.0.0.1','php','root','root','3306'); //insert //$table='staff'; //$data=['name'=>'小刘','sex'=>0,'age'=>30,'salary'=>3000]; //$rowCount=insert($pdo,$table,$data); //if($rowCount>0){ // echo '插入数据成功!共:'.$rowCount.'条数据!'; //}else{ // echo '插入失败!'; //} //delete //$table='staff'; //$where="name='小刘'"; //$rowCount=delete($pdo,$table,$where); //if($rowCount>0){ // echo '删除数据成功!共:'.$rowCount.'条数据!'; //}else{ // echo '删除失败!'; //} //update //$table='staff'; //$data=['name'=>'小刘','sex'=>0,'age'=>30,'salary'=>9800]; //$where="name='小刘'"; //$rowCount=update($pdo,$table,$data,$where); //if($rowCount>0){ // echo '更新数据成功!共:'.$rowCount.'条数据!'; //}else{ // echo '更新失败!'; //} //query //查询共有几种情况, 1.多字段 2.查询所有 3.查询条件 //$table='staff'; //$fields=['name','age','salary']; //$fields='*'; //$fields='name,salary'; //$where = 'salary < 3000'; //$array=query($pdo,$table,$fields,$where); //echo '<pre>'; //print_r($array); //queryall //$table='staff'; //$fields=['name','age','salary']; //$fields='*'; //$fields='name,salary'; //$where = 'salary > 5000'; //$order='age ASC'; //ASC 从小到大 DESC 从大到小 //$array=queryall($pdo,$table,$fields,$where,$order); //echo '<pre>'; //print_r($array);