Работа с базой данных

Сентябрь 5, 2018

Теги: Хранение данных, Основное

Работа с прямым подключением к базам данных (основной или дополнительным).

Получить соединение с основной базой данных:


$connection = \Bitrix\Main\Application::getConnection();

Подключение к дополнительной базе данных:


$connection = \Bitrix\Main\Application::getConnection('additional');

/*
В файле /bitrix/.settings.php:
  'connections' => 
  array (
    'value' => 
    array (
      'default' => // основная база данных
      array (
        'className' => '\\Bitrix\\Main\\DB\\MysqliConnection',
        'host' => 'localhost',
        'database' => 'dbname',
        'login' => 'login',
        'password' => 'password',
        'options' => 2.0,
      ),
      'additional' => .. дополнительная база данных
      array (
        'className' => '\\Bitrix\\Main\\DB\\MysqliConnection',
        'host' => '103.10.26.201:1023',
        'database' => 'dbname',
        'login' => 'login',
        'password' => 'password',
        'options' => 2.0,
      ),
    ),
    'readonly' => true,
  ),
*/

Запрос к базе данных с получением результата:


$result $connection->query('SELECT * FROM table_name ORDER BY id DESC');

// $result = $connection->query('SELECT * FROM table_name ORDER BY id DESC',10); // с указанием LIMIT
// $result = $connection->query('SELECT * FROM table_name ORDER BY id DESC',0,10); // с указанием LIMIT и смещением от начала выборки
while($ar=$result->fetch())
{
    
print_r($ar);
}

Подготовка строки для использования в sql-запросе (максимальная длина - 50 символов):


$sqlHelper $connection->getSqlHelper();

$string $sqlHelper->forSql($string,50);

Скалярный запрос (возвращает не набор данных, а конкретное значение):


$count $connection->queryScalar("SELECT COUNT(ID) FROM table_name");

Запрос без получения результата:


$connection->queryExecute("INSERT INTO table_name (FIELD1, FIELD2) VALUES ('Значение 1', 'Значение 2')");

← Переход к списку