## 目录结构AdminFramework Database 是一个轻量级的 PHP 数据库操作类库,提供了简洁易用的 API 来管理数据库连接、执行查询、备份和恢复数据库等功能。
├── demo/
│ ├── config.php # 数据库配置文件
│ ├── function.php # 常用函数
│ ├── index.php # 示例
├── src/
│ ├── Database.php # 数据库核心类(单例模式)
│ ├── Table.php # 数据表操作类
│ ├── Backup.php # 数据库备份类
│ └── Import.php # 数据库导入类
├── tests/
│ ├── DatabaseTest.php # 数据库核心类测试
│ ├── TableTest.php # 数据表操作类测试
│ ├── BackupTest.php # 数据库备份类测试
│ └── ImportTest.php # 数据库导入类测试
└── README.md # 说明文档
- 单例模式设计,确保全局只有一个数据库连接实例
- 支持自定义数据库配置
- 自动重连机制
- PDO 预处理查询,防止 SQL 注入
- 获取数据库所有表信息
- 获取单个表的详细信息和字段信息
- 检查表是否存在
- 删除和清空表
- 获取表的建表语句
- 导出表结构
- 导出表数据
- 支持批量导出多个表
- 支持设置备份保存路径
- 支持分页导出大数据表
- 加载单个 SQL 文件
- 递归加载目录中的 SQL 文件
- 执行 SQL 文件中的语句
- 支持按数字后缀排序执行
通过 Composer 安装 AdminFramework Database:
composer require admin-framework/databaseuse AdminFramework\Database\Database;
// 获取数据库实例并配置
$db = Database::getInstance([
'host' => '127.0.0.1', // 数据库主机
'port' => '3306', // 数据库端口
'username' => 'root', // 数据库用户名
'password' => '123456', // 数据库密码
'database' => 'adminFramework', // 数据库名称
'charset' => 'utf8mb4', // 数据库字符集
'prefix' => 'af_', // 数据库表前缀
]);
//
$db = Database::getInstance()->setConfig([
'host' => '127.0.0.1', // 数据库主机
'port' => '3306', // 数据库端口
'username' => 'root', // 数据库用户名
'password' => '123456', // 数据库密码
'database' => 'adminFramework', // 数据库名称
'charset' => 'utf8mb4', // 数据库字符集
'prefix' => 'af_', // 数据库表前缀
]);// 查询数据
$users = $db->query("SELECT * FROM users WHERE id > :id", [':id' => 10]);
// 插入数据
$userId = $db->query("INSERT INTO users (name, email) VALUES (:name, :email)", [
':name' => 'John Doe',
':email' => 'john@example.com'
]);
// 更新数据
$affectedRows = $db->query("UPDATE users SET name = :name WHERE id = :id", [
':name' => 'Jane Doe',
':id' => $userId
]);
// 删除数据
$affectedRows = $db->query("DELETE FROM users WHERE id = :id", [':id' => $userId]);// 获取所有表信息
$tables = $db->table->tables();
// 获取表的字段信息
$fields = $db->table->fields('users');
// 检查表是否存在
$exists = $db->table->has('users');
// 获取表的建表语句
$createSql = $db->table->createTableSql('users');
// 删除表
$db->table->drop('users');
// 清空表
$db->table->truncate('users');// 创建备份实例
$backup = $db->backup;
// 设置备份保存路径
$backup->setPath('/path/to/backup', 'time'); // 使用时间作为子目录名
// 设置要备份的表
$backup->setTable(['users', 'posts']);
// 设置每次备份数据的行数限制
$backup->setLimit(1000);
// 导出表结构
$structure = $backup->exportStructure();
// 导出表数据
$dataCount = $backup->exportData();
// 导出表结构和数据
$result = $backup->exportAll();// 创建导入实例
$import = $db->import;
// 加载单个 SQL 文件
$import->loadSqlFile('/path/to/backup/users.sql');
// 递归加载目录中的所有 SQL 文件
$import->loadSqlFileByDir('/path/to/backup', true);
// 执行所有加载的 SQL 文件
$count = $import->execute();获取数据库实例的唯一入口。
- 参数:
$config:数据库配置数组
- 返回:Database 实例
获取 PDO 实例。
- 返回:PDO 实例
执行 SQL 查询。
- 参数:
$sql:SQL 查询语句$params:查询参数数组$returnStmt:是否返回 PDOStatement 对象
- 返回:查询结果或受影响的行数
设置配置。
- 参数:
$index:配置索引或数组$value:配置值
- 返回:Database 实例
获取配置。
- 参数:
$index:配置索引$default:默认值
- 返回:配置值
获取数据库所有表名或详细信息。
- 参数:
$detail:是否显示详细信息
- 返回:表信息数组
获取表信息。
- 参数:
$tableName:表名称$index:要检索的特定信息索引
- 返回:表信息数组
获取表字段信息。
- 参数:
$tableName:表名称$detail:是否显示详细信息$databaseName:数据库名称
- 返回:表字段信息数组
判断数据表是否存在。
- 参数:
$table:表名称
- 返回:表存在返回 true,否则返回 false
删除数据表。
- 参数:
$table:表名称
- 返回:成功返回 true,失败返回 false
清空数据表。
- 参数:
$table:表名称
- 返回:成功返回 true,失败返回 false
获取表的建表语句。
- 参数:
$table:表名称$isDropTable:是否包含 DROP TABLE IF EXISTS 语句
- 返回:建表语句
设置备份保存路径。
- 参数:
$path:备份保存路径$rule:子目录命名规则(time、md5、sha1 或自定义字符串)
- 返回:Backup 实例
设置要备份的表名或数组。
- 参数:
$table:表名或数组
- 返回:Backup 实例
设置每次备份数据的行数限制。
- 参数:
$limit:行数限制
- 返回:Backup 实例
设置是否添加删除表结构 SQL。
- 参数:
$isAddDropSql:是否添加
- 返回:Backup 实例
设置是否保存 SQL 语句至文件。
- 参数:
$isSaveSqlToFile:是否保存
- 返回:Backup 实例
导出表结构。
- 返回:表结构数组
导出表数据。
- 返回:导出数据行数
导出表结构和数据。
- 返回:导出结果数组
加载 SQL 文件。
- 参数:
$file:SQL 文件路径
- 返回:Import 实例
递归加载目录中的 SQL 文件。
- 参数:
$dir:目录路径$isRecursive:是否递归子目录
执行所有加载的 SQL 文件中的语句。
- 返回:执行的 SQL 语句条数
- PHP >= 7.4
- PDO 扩展
- MySQL 数据库
Apache License 2.0
小码农 phpxmn@gmail.com
- v1.0.0 (2024-12-17):初始版本发布,包含数据库连接、表操作、备份和导入功能
欢迎提交 Issue 和 Pull Request 来改进这个项目。