批改状态:合格
老师批语:
使用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);
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号