有没有办法记录SQLite查询?

有没有办法记录SQLite查询?

问题描述:

我使用准备好的语句,如:有没有办法记录SQLite查询?

$mysqlite = new SQLite3("test.sqlite", SQLITE3_OPEN_READWRITE); 
$stmnt = $mysqlite->prepare("INSERT INTO Friends VALUES(?,?,?)"); 
$stmnt->bindValue(1,4,SQLITE3_INTEGER); 
$stmnt->bindValue(2,"Jane",SQLITE3_TEXT); 
$stmnt->bindValue(3,"F",SQLITE3_TEXT); 
$stmnt->execute(); 

是否有使用预处理语句时,日志查询方式?

编辑:
如果无法从SQLite3预准备语句中提取查询,您会建议如何调试查询?

+1

如果您试图用数据记录声明,我认为您会感到失望。 – Brad 2012-03-09 04:46:40

+0

布拉德是正确的 - 文档http://www.php.net/manual/en/class.sqlite3stmt.php显示没有方法preparestatement返回最终查询日志。 – 2012-03-10 09:10:25

+0

Brad,msgmash.com:对于调试/日志记录查询,您会采用哪种替代策略? – Amit 2012-03-10 16:54:09

您可以扩展SQLite3类,并通过覆盖prepare方法来包装SQLite3Stmt对象。在你的包装中实现bindValueexecute方法,并在SQLite3Stmt对象上调用它们(在此处添加日志记录)。要完成它,你可以添加magic__get__call函数用于你没有拦截的任何方法/属性。

为此,您必须将“新SQLite3”更改为“新SQLite3Debug”(假设您的扩展类被称为此)。