MySQLi增删改查封装函数

1 实现思路

数据库连接认证:将连接认证,选择数据库和设置字符集进行封装。
封装执行SQL语句函数:将增加、删除、修改、查询的SQL传入函数中,执行并返回结果。
封装自动更新函数:将要更新的数据和主键id传入函数中,自动组装SQL进行更新。
封装查询数据函数:根据传入的SQL语句或指定的条件去查询一条记录或者多条记录。

2 实现代码

<?php

// 数据库连接认证:将连接认证,选择数据库和设置字符集进行封装;
function connect($user, $pass, $dbname, &$error, $host = 'localhost', $port = '3306', $charset = 'utf8')
{
$conn= mysqli_connect($host, $user, $pass, $dbname, $port);
if (!$conn) {
$error = mysqli_connect_error();
return false;
}
if (!mysqli_set_charset($conn, $charset)) {
$error = mysqli_error($conn);
return false;
}
return $conn;
}

// 封装执行SQL语句函数:执行SQL语句
function query($conn, $sql, &$error)
{
$res = mysqli_query($conn, $sql);
if ($res === false) {
$error = mysqli_error($conn);
return false;
}
return $res;
}

// 封装执行SQL语句函数:调用query()方法,处理结果集;
function read($conn, $sql, &$error, $all = false) {
$res = query($conn, $sql, $error);
if ($res === false) {
return false;
}
$lists = [];
if ($all) {
while ($row = mysqli_fetch_assoc($res)) {
$lists[] = $row;
}
} else {
$lists = mysqli_fetch_assoc($res);
}
mysqli_free_result($res);
return $lists;
}

// 封装自动更新函数:将更新的数据和主键id传入函数中,自动组装SQL进行更新
function auto_update($conn, $data, $table, &$error, $id = 0){
$set = '';
foreach ($data as $k => $v) {
$set .= $k . "='{$v}',";
}
$set = rtrim($set, ','); // title='title',content='content'
$sql = "UPDATE {$table} SET {$set} ";
if ($id) {
$sql .= ' WHERE `id` = ' . $id;
}
if (query($conn, $sql, $error)) {
return mysqli_affected_rows($conn);
} else {
return false;
}
}

// 封装查询数据函数:执行查询语句;
function auto_read($conn, $table, &$error, $where = [], $all = false){
$where_clause = ' WHERE 1 ';
if ($where) {
foreach ($where as $k => $v) {
$where_clause .= ' AND ' . $k . " = '$v' ";
}
}
$sql = "SELECT * FROM {$table} {$where_clause}";
$res = query($conn, $sql, $error);
if ($res === false) {
return $res;
}
// (省略处理结果集代码)
}

// 封装查询数据函数:处理结果集
function auto_read($conn, $table, &$error, $where = [], $all = false){
// (省略查询语句代码)
$lists = [];
if ($all) {
while ($row = mysqli_fetch_assoc($res)) {
$lists[] = $row;
}
} else {
$lists = mysqli_fetch_assoc($res);
}
mysqli_free_result($res);
return $lists;
}


// 使用:
// 调用封装函数:修改连接数据库和查询作者信息的代码;
include 'Sql.php';
$conn = connect('root', '123456', 'news', $error);
if (!$conn) {
exit($error);
}
$sql = 'SELECT `id`,`name` FROM `author`';
$authors = read($conn, $sql, $error, true);
include 'add.html';

// 调用封装函数:修改连接数据库和添加数据的代码
include 'Sql.php';
$conn = connect('root', '123456', 'news', $error);
if (!$conn) {
exit($error);
}
$sql = 'INSERT INTO `news` VALUES(null, \''. $title. '\', \'' .
$content . '\',' . $a_id . ',' . time() . ')';
$res = query($conn, $sql, $error);


相关推荐

  • 获取指定目录下的所有图片信息

    1 获取指定目录下的所有图片信息// 获取指定目录下的所有图片信息 public function getImagesInfo($directory) { $images = []; // 创建递归目录迭代器 $iterator = new \RecursiveIteratorIterator( new \RecursiveDirectoryIterator($directory, \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::LEAVES_ONLY ); // 遍历目录中的每个文件 foreach (

  • Thinkphp各版本的PHP要求

    ThinkPHP 8.0:运行环境要求PHP8.0+,兼容PHP8.3ThinkPHP 6.1:运行环境要求PHP7.2+,兼容PHP8.1ThinkPHP 6.0:运行环境要求PHP7.2+,兼容PHP8.1ThinkPHP 5.1:运行环境要求PHP5.6+,兼容PHP8.0ThinkPHP 5.0:运行环境要求PHP5.4+,兼容PHP7.3

  • Thinkphp5.1路径常量

    1 配置文件位置根目录/config/template.php2 配置文件内容&lt;?php// +----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK ]// +----------------------------------------------------------------------// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reser

  • Thinkphp5.0路径常量

    1 配置文件位置根目录/application/模块名/config.php2 配置文件内容&lt;?php//配置文件return [ // 后台视图输出字符串内容替换 'view_replace_str' =&gt; [ '__PUBLIC__' =&gt; '/', '__STATIC__' =&gt; '/static', '__CONSOLE__' =&gt; '/static/console', '__CONSOLE_CSS__' =&gt; '/static/console/css', '__CONSOLE_IMAGES__' =&gt; '/static/console/ima

  • wp站点防止别人进行DDOS攻击

    1 简介wp站点防止别人进行DDOS攻击。2 配置位置位置:根目录/wp-config.php3 配置内容在【根目录/wp-config.php】文件的开头添加如下代码:if(strpos($_SERVER['REQUEST_URI'], 'xmlrpc.php') !== false){ $protocol = $_SERVER['SERVER_PROTOCOL'] ?? ''; if(!in_array($protocol, ['HTTP/1.1', 'HTTP/2', 'HTTP/2.0', 'HTTP/3'], true)){ $protocol = 'HTTP/1.0'; } hea

  • 只读属性

    1 只读属性简介只读属性的声明方式类似于普通属性,但需要使用 readonly 关键字。2 只读属性例子class Point { public readonly float $x; public readonly float $y; public function __construct(float $x, float $y) { $this-&gt;x = $x; $this-&gt;y = $y; }}$point = new Point(3.5, 2.8);echo $point-&gt;x; // 输出: 3.5echo $point-&gt;y; // 输出: 2.8// 下面的尝