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);


相关推荐

  • 生成图片

    from PIL import Image, ImageColor, ImageDraw, ImageFont, ImageFilterdef create_image_with_text(size, color, text, font_path, font_size, text_color, shadow_color, output_path): """ Create a new image of specified size and color with centered text that has a border and shadow. :param size: A tuple con

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

    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