|
|
Работа с базой данных в Joomla
- Подробности
- Категория: Разработка в Joomla
Если используется MVC модель, то обратиться к объекту базы данных в классе модели можно так:
$this->_db
или в общем случае:
$dbo =& JFactory::getDBO();
Здесь можно посмотреть список api функций для работы с базой данных.
Примеры работы с базой данных в Joomla.
Доступ к внешней базе данных:
<?php $option = array(); //prevent problems $option['driver'] = 'mysql'; // Database driver name $option['host'] = 'db.myhost.com'; // Database host name $option['user'] = 'fredbloggs'; // User for database authentication $option['password'] = 's9(39s£h[%dkFd'; // Password for database authentication $option['database'] = 'bigdatabase'; // Database name $option['prefix'] = 'abc_'; // Database prefix (may be empty) $db = & JDatabase::getInstance( $option ); ?>
Вот примеры наиболее, на мой взгляд, необходимых методов для работы с базой данных в Joomla:
1. array loadObjectList ( $key ) - Возвращает массив объектов типа stdClass. Каждый объект соответствует определенной записи в таблице БД.
$dbo =& JFactory::getDBO();
$query = "SELECT bid, name, clickurl FROM #__banner";
$dbo->setQuery( $query );
$row =& $dbo->loadObjectList();
print_r( $row );
2. object loadObject () - аналогично предыдущему примеру, только возращается один объект с полями таблицы
3. void loadResultArray ( $numinarray ) - возвращает одно поле из всех записей таблицы
4. mixed loadResult () - возвращает первое поле первой записи
5. mixed query() - выполняет заданную строку SQL
$dbo =& JFactory::getDBO();
$sql = "SELECT * FROM #__categories";
$dbo->setQuery( $sql );
if (!$result = $dbo->query()) {
echo $dbo->stderr();
}
echo $dbo->getNumRows( $result );
С помощью этого метода можно делать исполняемые запросы INSERT DELETE UPDATE
$database->setQuery("INSERT INTO #__table (name,value) VALUES ('имя','значение')");
$database->query();
Если в таблице было создано поле типа AUTO_INCREMENT, то получить идентификатор вновь созданного поля можно при помощи метода insertid, если вызвать его сразу после непосредственной вставки данных.
$dbo =& JFactory::getDBO();
$sql = 'INSERT INTO #__contact_details (name) VALUES("PEDRO")';
$dbo ->setQuery( $sql );
if (!$dbo->query()) {
echo $dbo->stderr();
} else {
echo $dbo->insertid();
}
Добавление строк в базу данных:
string getEscaped ( $text ) - экранирует символы для добавления в базу данных
string Quote ( $text ) - тоже что и getEscaped, только ещё строка обрамляется одинарными кавычками
$text = $database->Quote( "Joomla! is 'Power in Simplicity'!" );
$sql = "SELECT * FROM #__content WHERE introtext=$text";
Получаем:
SELECT * FROM jos_content WHERE introtext='Joomla! is \'Power in Simplicity\'!'




