Есть ли способ регистрировать запросы SQLite? - PullRequest
4 голосов
/ 09 марта 2012

Я использую подготовленные операторы, например:

$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 Ответ

3 голосов
/ 13 марта 2012

Вы можете расширить класс SQLite3 и обернуть объект SQLite3Stmt, переопределив метод prepare. В вашей оболочке реализуйте методы bindValue и execute и вызывайте их для объекта SQLite3Stmt (добавьте запись здесь). Чтобы закончить, вы можете добавить функции magic __get и __call для любых методов / свойств, которые вы не перехватываете.

Чтобы это работало, вы должны изменить «новый SQLite3» на «новый SQLite3Debug» (при условии, что ваш расширенный класс называется так).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...