有没有办法记录SQLite查询?

时间:2012-03-09 04:44:33

标签: php 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 个答案:

答案 0 :(得分:3)

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

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