2012-03-09 2 views
4

Я использую подготовленные заявления, как:Есть ли способ регистрировать запросы 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

+0

Брэд прав - документация http://www.php.net/manual/en/class.sqlite3stmt.php показывает, что не существует метода для подготовленного состояния, которое возвращает завершенный запрос в журнал. –

+0

Brad, msgmash.com: Какую альтернативную стратегию вы предложили бы для отладки/регистрации запросов? – Amit

ответ

3

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

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

Смежные вопросы