AdminFramework Database
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 # 说明文档
核心功能
1. 数据库连接管理
- 单例模式设计,确保全局只有一个数据库连接实例
- 支持自定义数据库配置
- 自动重连机制
- PDO 预处理查询,防止 SQL 注入
2. 数据表操作
- 获取数据库所有表信息
- 获取单个表的详细信息和字段信息
- 检查表是否存在
- 删除和清空表
- 获取表的建表语句
3. 数据库备份
- 导出表结构
- 导出表数据
- 支持批量导出多个表
- 支持设置备份保存路径
- 支持分页导出大数据表
4. 数据库导入
- 加载单个 SQL 文件
- 递归加载目录中的 SQL 文件
- 执行 SQL 文件中的语句
- 支持按数字后缀排序执行
安装与配置
安装
通过 Composer 安装 AdminFramework Database:
composer require admin-framework/database
配置
use 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_', // 数据库表前缀
]);
使用示例
1. 执行 SQL 查询
$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]);
2. 数据表操作
$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');
3. 数据库备份
$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();
4. 数据库导入
$import = $db->import;
$import->loadSqlFile('/path/to/backup/users.sql');
$import->loadSqlFileByDir('/path/to/backup', true);
$count = $import->execute();
API 文档
1. Database 类
getInstance(array $config = []): Database
获取数据库实例的唯一入口。
pdo(): PDO
获取 PDO 实例。
query(string $sql, array $params = [], bool $returnStmt = false)
执行 SQL 查询。
- 参数:
$sql:SQL 查询语句
$params:查询参数数组
$returnStmt:是否返回 PDOStatement 对象
- 返回:查询结果或受影响的行数
setConfig($index, $value = null): self
设置配置。
- 参数:
$index:配置索引或数组
$value:配置值
- 返回:Database 实例
getConfig(string $index = '', $default = false)
获取配置。
2. Table 类
tables(bool $detail = true)
获取数据库所有表名或详细信息。
info(string $tableName, string $index = ''): array
获取表信息。
- 参数:
$tableName:表名称
$index:要检索的特定信息索引
- 返回:表信息数组
fields(string $tableName, bool $detail = true, string $databaseName = ''): array
获取表字段信息。
- 参数:
$tableName:表名称
$detail:是否显示详细信息
$databaseName:数据库名称
- 返回:表字段信息数组
has(string $table): bool
判断数据表是否存在。
- 参数:
- 返回:表存在返回 true,否则返回 false
drop(string $table): bool
删除数据表。
- 参数:
- 返回:成功返回 true,失败返回 false
truncate(string $table): bool
清空数据表。
- 参数:
- 返回:成功返回 true,失败返回 false
createTableSql(string $table, bool $isDropTable = true): string
获取表的建表语句。
- 参数:
$table:表名称
$isDropTable:是否包含 DROP TABLE IF EXISTS 语句
- 返回:建表语句
3. Backup 类
setPath(string $path, string $rule = 'time'): self
设置备份保存路径。
- 参数:
$path:备份保存路径
$rule:子目录命名规则(time、md5、sha1 或自定义字符串)
- 返回:Backup 实例
setTable($table): self
设置要备份的表名或数组。
setLimit(int $limit = 5000): self
设置每次备份数据的行数限制。
setIsAddDropSql(bool $isAddDropSql): self
设置是否添加删除表结构 SQL。
setIsSaveSqlToFile(bool $isSaveSqlToFile): self
设置是否保存 SQL 语句至文件。
exportStructure(): array
导出表结构。
exportData(): int
导出表数据。
exportAll(): array
导出表结构和数据。
4. Import 类
loadSqlFile(string $file): Import
加载 SQL 文件。
loadSqlFileByDir(string $dir, bool $isRecursive = false)
递归加载目录中的 SQL 文件。
- 参数:
$dir:目录路径
$isRecursive:是否递归子目录
execute(): int
执行所有加载的 SQL 文件中的语句。
依赖要求
- PHP >= 7.4
- PDO 扩展
- MySQL 数据库
许可证
Apache License 2.0
作者
小码农 phpxmn@gmail.com
版本历史
- v1.0.0 (2024-12-17):初始版本发布,包含数据库连接、表操作、备份和导入功能
贡献指南
欢迎提交 Issue 和 Pull Request 来改进这个项目。
联系方式