Joomla! JDatabase::getErrorNum() is deprecated, use exception handling instead
Asked Answered
E

3

9

I have the following code:

    $db = JFactory::getDbo();
    $query = $db->getQuery(true);

    $query->select('*');
    $query->from('#__users');
    $db->setQuery($query);

    // Check for a database error.
    if ($db->getErrorNum()) {
        JError::raiseWarning(500, $db->getErrorMsg());
    }       

    $result = $db->loadResult();

Now getErrorNum as well as JError are deprecated.

Just to clarify, JError and $db->getErrorNum() are NOT deprecated in Joomla 2.5 but are in Joomla! 3.0. So this question has value for somebody who develops for 2.5 but wants to make an easy upgrade to 3.X series.

So with what exactly to replace them so that I can properly check for database errors?

Erlking answered 20/12, 2012 at 8:22 Comment(0)
B
11
$db = JFactory::getDbo();
$query = $db->getQuery(true);

$query->select('*')
      ->from('#__users');

try
{
    $db->setQuery($query);
    $result = $db->loadResult();
}
catch (RuntimeException $e)
{
    echo $e->getMessage();
}

Hope it helps

Bircher answered 11/3, 2013 at 16:49 Comment(0)
S
7

JError is NOT deprecated in Joomla 2.5 - but in Joomla 3.0 (Platform 12.1 onwards) so for Joomla 2.5 this is not an issue. JError is being replaced with the php exceptions (link to the php guide here)

There is also a Joomla forum question about this here

Using exception is also the case for getErrorNum() - again read the php documentation link above for more info. There's a nice mysql example on the page here.

Siddra answered 20/12, 2012 at 16:34 Comment(0)
C
1
$app = JFactory::getApplication();

$db = JFactory::getDbo();
$query = $db->getQuery(true);

$query->select('*')
  ->from('#__tablename');

try
{
    $db->setQuery($query);
    $result = $db->loadObjectList();
}
catch (Exception $e)
{
    $app->enqueueMessage(JText::_($e->getMessage()), 'error');
}

and redirect to your url. Error message will be displayed

Contradict answered 17/4, 2015 at 5:17 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.