2008-12-01 6 views
3

Есть ли способ сделать трассировку стека для отображения всего сгенерированного оператора SQL, когда есть ошибка, а не только первые несколько символов?zend framework trace trace

Это то, что он в данный момент отображается

... \ Zend \ Db \ адаптер \ PDO \ Abstract.php (220): Zend_Db_Adapter_Abstract-> запрос ('UPDATE «дикция ...', массив)

..и я хотел бы видеть все обновления заявление перед отправкой в ​​БД, чтобы отслеживать, что случилось с ним.

Спасибо за помощь. SWK

+0

Я не знаю ответ на этот вопрос, но это один, что мне ошибки, а также. – smack0007 2008-12-01 12:22:41

ответ

12

Если вы хотите просмотреть полный оператор sql, вы можете использовать Zend_Debug. Например, если ваш SQL заявление в переменной $ выбрать и вы хотите просмотреть полный текст инструкции SQL, вы можете использовать следующую строку кода:

Zend_Debug::Dump($select); 
exit; 

Или, если ваш код будет создан ивовый прут в классе Zend_Db_Table вы можете использовать :

$select = new Zend_Db_Select(Zend_Registry::get('db')); 
$select->from('string'); 
Zend_Debug::Dump($select->assemble()); 
exit; 

Я думаю, что лучший способ для просмотра SQL заявления является использованием функции профилирования на подключении к базе данных. Это комбинация с функцией регистрации, а дополнение firePHP для Firefox - моя любимая настройка.

Если вы используете конфигурацию MVC в Zend Framework это делается белыми эти строки коды:

// setup the database connection 
$db = Zend_Db::factory(Zend_Registry::get('config')->database->adapter,Zend_Registry::get('config')->database->params); 

// create a new profiler 
profiler = new Zend_Db_Profiler_Firebug('All DB Queries'); 

// enable profiling (this is only recommended in development mode, disable this in production mode) 
$profiler->setEnabled(true); 
// add the profiler to the database object 
$db->setProfiler($profiler); 

// setup the default adapter to use for database communication 
Zend_Db_Table_Abstract::setDefaultAdapter($db); 

// register the database object to access it in other parts of the project 
Zend_Registry::set('db',$db); 

/** 
* 
* This part is optional 
* 
* You can use this logger to log debug information to the firephp add-on for Firefox 
* This is handy for debugging but must be disabled in production mode 
* 
*/ 

// create logger 
$logger = new Zend_Log(); 

// create firebug writer 
$firebug_writer = new Zend_Log_Writer_Firebug(); 

// add writer to logger 
$logger->addWriter($firebug_writer); 

// register the logger object to access it in other parts of the project 
Zend_Registry::set('log',$logger); 

поджигателя надстройки (требование FirePHP) можно найти на этом сайте: Firebug

FirePHP дополнения можно найти на этом сайте: FirePHP

Иво Trompert

3

в то время как профайлер является V круто - это не поможет отладки, когда система выдает исключение ..

проверить этот пост давать более трассировка стека вкл полный SQL

ТОЛЬКО ДЛЯ ИСПОЛЬЗОВАНИЯ В DEV СРЕДЫ по понятным причинам

http://www.edmondscommerce.co.uk/blog/zend-framework/zend-framework-more-detailed-stack-trace/