База данных

Соединение с базой данных

Метод instance() принимает необязательный параметр $name — название соединения из конфигурационного файла, по умолчанию 'default'.

$oDataBase = Core_DataBase::instance();

Выполнение запроса

$oCore_DataBase = Core_DataBase::instance()
   ->setQueryType(0)
   ->query('ЗАПРОС');

Виды запросов

Получить результат в виде ресурса

$oCore_DataBase->getResult();

Получить весь результат в виде массива

$aRows = $oCore_DataBase->asAssoc()->result();

Получение результата построчно

while ($row = $oCore_DataBase->asAssoc()->current())
{
print_r($row);
}

Получение последнего выполненного запроса

$sLastQuery = Core_DataBase::instance()->getLastQuery();

echo htmlspecialchars($sLastQuery);

Конфигурационный файл

Конфигурационный файл размещается в  modules/core/config/database.php и содержит следующие настройки:

Пример конфигурационного файла:

<?php

return array (
	'default' => array (
		'driver' => 'pdo',
		'class' => 'Core_DataBase_Pdo',
		'host' => 'localhost',
		'username' => 'srv82user',
		'password' => 'megapassword',
		'database' => 'hostcms'
	)
);

Открытие дополнительного соединения с другой базой данных

В конфигурационный файл внесите данные о дополнительном соединении и дайте ему имя, например, external. Далее Core_QueryBuilder передаете соединение через setDataBase():

$oCore_Database = Core_Database::instance('external');
$queryBuilder = Core_QueryBuilder::select();
$queryBuilder->setDataBase($oCore_Database);
$queryBuilder->...

Для смены используемой базы данных в ORM выполните следующую инструкцию, передав название соединения:

Core_Entity::setDatabaseDriver('external');

Не нашли ответ на свой вопрос в документации? Направьте обращение в службу поддержки или онлайн чат.

Комментарии

  • Подключение к СУБД через SSL

    Для тех, кому требуется подключиться к СУБД через SSL, если, например, на сервере установлен require_secure_transport=ON
    В массиве конфигурации подключения к базе данных /modules/core/config/database.php необходимо добавить элемент 'attr'

    'attr' => array(
    PDO::ATTR_PERSISTENT => FALSE,
    PDO::MYSQL_ATTR_SSL_CA => '/path/to/your-ca-certificate.pem',
    PDO::MYSQL_ATTR_SSL_CERT => '/path/to/your-client-pulic-certificate.pem',
    PDO::MYSQL_ATTR_SSL_KEY => '/path/to/your-client-certificate-private-key.pem',
    PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => TRUE
    )

    Не путайте свой клиентский сертификат сервера, где установлена HostCMS, с сертификатом сервера, где установлена сама СУБД, если они находятся на разных машинах. В этому случае у СУБД свой сертификат, у сервера с HostCMS — свой.

    В случае, если и для сервера с СУБД, и для сервера HostCMS сертификат выпущен одним и тем же центром сертификации (например, у вас собственная PKI-инфраструктура), тогда в массиве 'attr' нет необходимости указывать пути к вашим клиентскому сертификату и файлу закрытого ключа. Конечно же, корневые сертификаты такого центра сертификации должны быть добавлены в перечень доверенных.

    Для Ubuntu Server, например, для этого их (файлы публичных сертификатов ЦС) необходимо поместить в каталог /usr/local/share/ca-certificates/you-ca-catalog, после чего выполнить команду sudo update-ca-certificates. После этого Ubuntu Server начнет доверять всем сертификатам, выпущенным вашим Центром сертификации.

    06.03.2026 12:05:37
    lezhenkin
  • Без темы

    А как получить ID последней вставленной записи?

    24.12.2018 02:13:30
    volgastar

    Без темы

    Если использовали Core_QueryBuilder::insert(), то есть метод $oInsert->getInsertId()

    24.12.2018 10:05:50
    hostcms

    Без темы

    $query = "INSERT INTO form_fills(form_id,ip,datetime) VALUES(2,'".$user_ip."','".$date_time."');";
    $oCore_DataBase = Core_DataBase::instance()
    ->setQueryType(1)//1 insert
    ->query($query);

    24.12.2018 11:47:10
    volgastar

    Без темы

    Используйте https://www.hostcms.ru/documentation/modules/core/querybuilder/

    24.12.2018 12:16:23
    hostcms
  • Без темы

    Как прописать новый, отличный от стандартного, порт подключения к базе данных MySQL?

    12.07.2017 13:48:23
    brujoseyes
    brujoseyes

    Без темы

    Прописать через двоеточие после имени хоста.

    12.07.2017 14:10:41
    hostcms
  • Без темы

    Какие права должны быть выставлены на файл ?
    При установки по умолчанию они: 644 ...

    11.12.2014 16:40:37
    iflat
    iflat

    Без темы

    Права зависят от хостинга/сервера, при правильно установленных владельцах в большинстве случаев это 644 на файлы и 755 на директории

    12.12.2014 08:58:45
    hostcms