moledet / database-change-log
一个PHP类,用于记录从原始SQL或PDO语句中更改的表数据
v1.0.2
2024-06-14 10:39 UTC
Requires
- php: >=8.3
- greenlion/php-sql-parser: 4.6.0
This package is auto-updated.
Last update: 2024-09-14 11:31:36 UTC
README
DatabaseChangeLog类帮助记录所有更新、删除、插入SQL查询到数据表data_change_log。该类通过在代码中添加一个字符串来解析原始SQL或PDO查询。日志将保存数据更改以及userID、ip、userAgent和系统(可配置)。
需要记录日志的表和列可能由每个动作(更新、删除、插入)进行配置。
安装
###从Git下载 下载
###克隆
git clone https://github.com/moledet/database-change-log.git Log
###Composer
php composer.phar require moledet/database-change-log
或者在您的composer.json中添加,请参阅文档。
{ "repositories": [ { "url": "https://github.com/moledet/database-change-log", "type": "vcs" } ], "require": { "moledet/database-change-log": "dev-master" } }
###依赖 此类依赖于PHP-SQL-Parser。
用法
###配置 您必须配置数据库连接。
$config = array( 'database'=>'mysql', 'host'=>'localhost', 'port'=>3306, 'dbname'=>'test', 'charset'=>'utf8', 'user'=>'admin', 'password'=>'secret' ); DatabaseChangeLog::getInstance()->setConnection($config);
可以配置当前用户ID(默认0)、系统名称(默认CRM)或需要记录的列表(表、列、动作)。如果不配置表列表,则所有表的变化都将被记录。
DatabaseChangeLog::getInstance()->setUserId(7); DatabaseChangeLog::getInstance()->setSystemName('API'); $config = [ 'user'=>[ 'insert'=>['login','name','password'] 'delete'=>'all', 'update'=>['login','name'] ], 'customers'=>'all', ]; DatabaseChangeLog::getInstance()->setLogTablesConfig($config);
###如何使用 需要在运行之前调用日志SQL。您可以在查询之前覆盖框架或ORM连接来运行它。
$sql = "UPDATE user SET password='secret' WHERE id=7;"; DatabaseChangeLog::getInstance()->log($sql); $framework->getConnection()->runSQL($sql);
或PDO
$query = 'UPDATE users SET bonus = bonus + ? WHERE id = ?'; $stmt = $pdo->prepare($query); foreach ($data as $id => $bonus) { DatabaseChangeLog::getInstance()->log($query,[$bonus,$id]); $stmt->execute([$bonus,$id]); }
###结果 在数据表data_change_log中将保存更改的日志。