使用 PHP5,以及用于执行 MySQL 查询的 MySQLi 类,如何将使用 MySQLi::query 处理的每个查询记录在当前连接数据库的新表中?
是否可以对函数进行一些扩展,比如在 Java 中?
如果您使用支持触发器的 mysql 版本。只需创建一个触发器,这样您就不必用不必要的业务逻辑污染代码
http://dev.mysql.com/doc/refman/5.0/en/triggers.html
从 MySQL 5.0.2 开始包括对触发器的支持。因此,当您部署应用程序时,您会在创建表的同时创建触发器。
为您的日志定义一个表
create table querylog (
tm timestamp,
query varchar(4096));
当您进行查询时,将查询字符串记录在此表中
insert into querylog (tm, query)
values(now(), '$query_string')
您可以在每个查询中显式执行此操作,也可以在函数中执行此操作my_query
,您可以定义和调用,而不是mysqli_query
像@E_p 建议的那样,在触发器中执行此操作。