Перехват ошибок БД

Тема в разделе "Программирование", создана пользователем alexeyd, 21.01.2010.

  1. Offline

    alexeyd Недавно здесь

    Регистрация:
    21.01.2010
    Сообщения:
    2
    Симпатии:
    0
    Пол:
    Мужской
    Доброго дня,

    Долго рылся в интернете и ничего не смог найти такого чтобы мне подошло.
    Суть в чем:
    пишу отдельный скрипт но который использует классы джумлы
    подключаю классы так:

    define( '_JEXEC', 1 );
    define('JPATH_BASE', dirname(__FILE__) );
    define( 'DS', DIRECTORY_SEPARATOR );
    require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
    require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
    JDEBUG ? $_PROFILER->mark( 'afterLoad' ) : null;
    $mainframe =& JFactory::getApplication('site');
    (если что-то лишнее поправте пожалуйста)

    и хотелось бы в скрипте отловить ошибку ну например когда нет конекта к бд дабы заменить на свою.
    Тоесть при отсутствии конекта получаем ответ в браузере:
    Database Error: Unable to connect to the database:Could not connect to MySQL

    но сколько и чего не пробовал никак не выходит отловить у меня эту ошибку и поменять на то что нужно.

    пробовал вот так
    $db =& JFactory::getDBO();
    if ($db->connected()) {
    $query = "SELECT * FROM #__users where username='test'";
    $db->setQuery( $query );
    print_r($db->loadObjectList());
    }else {echo "error";}

    результата не дало.
    Так же пробовал пользоваться
    $db->getErrorMsg()
    тот же результат.

    Ув. ГУРУ подскажите реально ли это сделать и если да то как?
     
  2.  
  3. omfgpanda
    Offline

    omfgpanda Недавно здесь => Cпециалист <=

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    Таким образом получите вывод стандартной ошибки
    Код (PHP):
    1. $db->setQuery( $query );
    2. if(!$db->query())
    3. {
    4.    echo __LINE__.$db->stderr();
    5. }


    Ну а так, можете написать все что угодно )))
    Код (PHP):
    1. $db->setQuery( $query );
    2. if(!$db->query())
    3. {
    4.    echo "FIRE !!!";
    5. }
     
  4. Offline

    alexeyd Недавно здесь

    Регистрация:
    21.01.2010
    Сообщения:
    2
    Симпатии:
    0
    Пол:
    Мужской
    cпасибо за ответ, но это тоже не выход ибо в данном случае мы отловим только ошибку которая может произойти во время запроса, а если нет соединения к базе то к сожалению джумла выводит ошибку
    Database Error: Unable to connect to the database:Could not connect to MySQL
    и прерывает дальнейшее выполнение скрипта насколько я понял из кода д
    \libraries\joomla\factory.php
    line:565 jexit('Database Error: ' . $db->toString() );

    и похоже в моем случае необходимо модифицыровать этот класс. Вот только пока не знаю как это сделать, еще не пришла мысль в голову =) плохо выспался ночью =)

    Но и за этот пример вам спасибо ибо это тоже мне пригодится.
     
  5. omfgpanda
    Offline

    omfgpanda Недавно здесь => Cпециалист <=

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    Код (PHP):
    1. $db =& JFactory::getDBO();
    2. if ($err = $db->getErrorMsg())
    3. {
    4.    echo "Fail =|";
    5. }
    6. else
    7. {
    8.    //работаем с бд дальше  
    9. }
     

Поделиться этой страницей

Загрузка...