如何从MySQLi预处理语句中查看呈现的(原始)查询?

时间:2011-08-18 02:39:38

标签: php mysqli prepared-statement

我正在为我的PHP / MySQLi应用程序构建一个日志类。我显然可以记录原始的预处理语句(带有问号),但是无需手动解析它,无论如何都可以看到在MySQL中执行的实际原始查询?

谢谢!

2 个答案:

答案 0 :(得分:1)

打开MySQL中的查询日志记录并监视mysql查询日志文件。

mysqld部分的my.cnf或my.ini文件中添加指令:

log = /path/to/my/log/file

答案 1 :(得分:0)

有很多方法可以看到'原始'查询,使用tcpdump,mysql-proxy端口嗅探,或者观看'mysqladmin -ppasswd'进程列表'',但是很短的时间你可以这样做:

Start:
echo "set global general_log_file=mysqllogfile;set global general_log=1;" | mysql -u root -ppasswd

From now on all queries will appear in /var/lib/mysql/mysqllogfile

Stop:
echo "set global general_log=0;" | mysql -u root -ppasswd

完成后别忘了禁用!

您可以将查询记录到表mysql.general_log:

echo "set global log_output=TABLE;" | mysql -u root -ppasswd
# restart logging
echo "set global general_log=0;" | mysql -u root -ppasswd
echo "set global general_log=1;" | mysql -u root -ppasswd

请注意,查看general_log表也会导致更新它们!