A simple PHP database component

Installs: 0

Dependents: 1

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/admin-framework/database

dev-master 2025-12-19 18:02 UTC

This package is auto-updated.

Last update: 2025-12-19 18:04:07 UTC


README

AdminFramework Database 是一个轻量级的 PHP 数据库操作类库,提供了简洁易用的 API 来管理数据库连接、执行查询、备份和恢复数据库等功能。

License PHP Version Require Latest Stable Version

## 目录结构
├── 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;

// 加载单个 SQL 文件
$import->loadSqlFile('/path/to/backup/users.sql');

// 递归加载目录中的所有 SQL 文件
$import->loadSqlFileByDir('/path/to/backup', true);

// 执行所有加载的 SQL 文件
$count = $import->execute();

API 文档

1. Database 类

getInstance(array $config = []): Database

获取数据库实例的唯一入口。

  • 参数
    • $config:数据库配置数组
  • 返回:Database 实例

pdo(): 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)

获取配置。

  • 参数
    • $index:配置索引
    • $default:默认值
  • 返回:配置值

2. Table 类

tables(bool $detail = true)

获取数据库所有表名或详细信息。

  • 参数
    • $detail:是否显示详细信息
  • 返回:表信息数组

info(string $tableName, string $index = ''): array

获取表信息。

  • 参数
    • $tableName:表名称
    • $index:要检索的特定信息索引
  • 返回:表信息数组

fields(string $tableName, bool $detail = true, string $databaseName = ''): array

获取表字段信息。

  • 参数
    • $tableName:表名称
    • $detail:是否显示详细信息
    • $databaseName:数据库名称
  • 返回:表字段信息数组

has(string $table): bool

判断数据表是否存在。

  • 参数
    • $table:表名称
  • 返回:表存在返回 true,否则返回 false

drop(string $table): bool

删除数据表。

  • 参数
    • $table:表名称
  • 返回:成功返回 true,失败返回 false

truncate(string $table): bool

清空数据表。

  • 参数
    • $table:表名称
  • 返回:成功返回 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

设置要备份的表名或数组。

  • 参数
    • $table:表名或数组
  • 返回:Backup 实例

setLimit(int $limit = 5000): self

设置每次备份数据的行数限制。

  • 参数
    • $limit:行数限制
  • 返回:Backup 实例

setIsAddDropSql(bool $isAddDropSql): self

设置是否添加删除表结构 SQL。

  • 参数
    • $isAddDropSql:是否添加
  • 返回:Backup 实例

setIsSaveSqlToFile(bool $isSaveSqlToFile): self

设置是否保存 SQL 语句至文件。

  • 参数
    • $isSaveSqlToFile:是否保存
  • 返回:Backup 实例

exportStructure(): array

导出表结构。

  • 返回:表结构数组

exportData(): int

导出表数据。

  • 返回:导出数据行数

exportAll(): array

导出表结构和数据。

  • 返回:导出结果数组

4. Import 类

loadSqlFile(string $file): Import

加载 SQL 文件。

  • 参数
    • $file:SQL 文件路径
  • 返回:Import 实例

loadSqlFileByDir(string $dir, bool $isRecursive = false)

递归加载目录中的 SQL 文件。

  • 参数
    • $dir:目录路径
    • $isRecursive:是否递归子目录

execute(): int

执行所有加载的 SQL 文件中的语句。

  • 返回:执行的 SQL 语句条数

依赖要求

  • PHP >= 7.4
  • PDO 扩展
  • MySQL 数据库

许可证

Apache License 2.0

作者

小码农 phpxmn@gmail.com

版本历史

  • v1.0.0 (2024-12-17):初始版本发布,包含数据库连接、表操作、备份和导入功能

贡献指南

欢迎提交 Issue 和 Pull Request 来改进这个项目。

联系方式