使用没有数据库包装器的 PHP 记录 mysql 查询
Posted
技术标签:
【中文标题】使用没有数据库包装器的 PHP 记录 mysql 查询【英文标题】:Log mysql queries using PHP without a DB wrapper 【发布时间】:2018-08-20 07:21:54 【问题描述】:在我的例子中,mysqli php 扩展用于访问 mysql 服务器。
这是一个 WordPress 网站,但最近许多插件从使用 wpdb
包装器切换,因为其他插件正试图通过钩子来操纵查询。
我需要记录选定用户的查询。我相信这只能通过使用 php 过滤和记录查询来实现。
在调用mysqli_query()
之前或之后是否可以在php中获取查询?
P.S:我正在寻找通用解决方案,所以我可以在我的插件中实现它。
【问题讨论】:
MySQL 提供日志所有常规查询,只需在 my.ini 中的mysqld
部分下设置general_log = 1
和general_log_file = absolute/path/file.log
您可以扩展mysqli
类并重载mysqli_query()
方法。
【参考方案1】:
不,使用原始 PHP 是不可能的。
您始终可以编写自己的数据库包装器并在您的插件中使用它。甚至鼓励您这样做,因为原始 mysqli 作为对 Mysql C API 的精简包装器,几乎无法按原样使用,并且无论如何都必须包装在帮助程序库中。
【讨论】:
这里不能使用包装器。我需要跟踪其他插件查询。以上是关于使用没有数据库包装器的 PHP 记录 mysql 查询的主要内容,如果未能解决你的问题,请参考以下文章
使用没有对象包装器的 Jquery $.grep 过滤对象数组