Методы объекта базы данных
$db =& JFactory::getDBO(); - получить ссылку на объект БД
$result = $db->setQuery($query); - передать запрос SELECT;
$db->_sql - переданный запрос с расшифровкой префиксов #__
$db->query($query); - передать запрос UPDATE, INSERT и т.п.
$db->getErrorMsg(); - получить расшифровку ошибки
$db->nameQuote($fieldname); - установка правильных ковычек имен (J 2.5)
$db->quoteName($fieldname); - установка правильных ковычек имен (J 3.3)
$db->Quote($fieldvalue); - установка правильных ковычек значений (J 2.5)
$db->quote($fieldvalue); - установка правильных ковычек значений (J 3.3)
$db->insertid(); - id последней записи, созданной через INSERT
loadResult(): string - значение первой ячейки результата
loadResultArray(num=0): array - получить столбец с номером num
loadAssoc(): array - получить первую запись
loadAssocList(key=''): array - получить массив записей (если key, то только одно поле)
loadObject(): stdClass
loadObjectList(key=''): array
loadRow(): array - первая запись в виде неассоц. массива
loadRowList(key: int): array
$object = new stdClass();
insertObject ($table, &$object, $key=null) - если указан $key, то новый ключ будет добавлен в объект
updateObject ($table, &$object, $key, $nulls=false) - если задан $nulls, то обновятся и значения равные null
Подробнее можно прочитать здесь Joomla 2.5 и здесь Joomla 3.3.
Объектный способ множественного инсерта:
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->insert('#__table_name');
$query->columns('a,b');
$query->values('1', 'one');
$query->values('2', 'two');
$query->values('3', 'three');
$db->setQuery($query);
$db->query();
A description of "values" method
Adds a tuple, or array of tuples that would be used as values for an INSERT INTO statement.
Usage:
$query->values('1,2,3')->values('4,5,6');
$query->values(array('1,2,3', '4,5,6'));
Пример запроса через ООП:
$query = $db->getQuery(true)
->select('id, password')
->from('#__users')
->where('username=' . $db->quote($username));
Еще пример (JDatabaseQueryMySQLi):
$query = JFactory::getDbo()->getQuery(true);
$query->select('b.*');
$query->select('f.addr, COUNT(f.id) AS childs');
$query->select('(SELECT COUNT(id) FROM #__cr_credits c WHERE c.published = 1 AND c.bank_id = b.id) AS credits');
$query->from('#__cr_banks b');
$query->join('INNER', '#__cr_filials f ON b.id = f.bank_id');
$query->where('b.published=1 AND f.town_id='.intval($town));
$query->group('b.id');
$query->order('b.sticky DESC');
$query->order($ord ? $ord.' '.$dir : 'b.rating DESC, b.ordering ASC');
$sql = strip_tags($query->dump());
Проверить вариант селекта:
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('id, url, title, level, active, active_xml');
$query->from('#__alebamap');
return $query;