JError ha quedado en desuso en J3.x, a favor de las excepciones de PHP, ya que entremezcló 2 conceptos de programación diferentes : registro y manejo de errores (el lado de registro ahora se ha implementado como JLog ).
Para su caso exacto, puede envolver su código en un bloque try / catch para obtener el error, como se muestra en esta respuesta SO :
try {
...
$db->setQuery($query);
$result = $db->loadResult();
}
catch (Exception $e){
echo $e->getMessage();
}
Tenga en cuenta que $database->execute()
se indica que NO funciona en J2.5 . Debe usarlo $database->query()
si necesita un equivalente.
En Joomla 2.5 y 3.x los JDatabase
métodos de objeto updateRecord()
y insertRecord()
también arrojan errores que puede detectar si fallan:
try {
JFactory::getDbo()->updateObject('#_table_name', $data);
} catch (Exception $e) {
//...handle the exception
}
Si está desarrollando solo para Joomla 3.x, también puede usar un bloque try catch con transacciones SQL para obtener los detalles del error:
$db = JFactory::getDbo();
try {
$db->transactionStart();
$query = $db->getQuery(true);
$values = array($db->quote('TEST_CONSTANT'), $db->quote('Custom'), $db->quote('/path/to/translation.ini'));
$query->insert($db->quoteName('#__overrider'));
$query->columns($db->quoteName(array('constant', 'string', 'file')));
$query->values(implode(',',$values));
$db->setQuery($query);
$result = $db->execute();
$db->transactionCommit();
}
catch (Exception $e) {
// catch any database errors.
$db->transactionRollback();
JErrorPage::render($e);
}