Полный цикл в digital

Работа с базой данных на низком уровне

Битрикс позволяет работать с базой данных на низком уровне, но это необходимо в небольшом числе случаев. Предпочтительно работать через ORM, которая позволяет программировать только на уровне бизнес-логики. Итак, сначала надо получить соединение с базой данных:

// Получить соединение с основной базой данных
$connection = Bitrix\Main\Application::getConnection();
// Подключение к дополнительной базе данных
$connection = Bitrix\Main\Application::getConnection('additional');

Настройка подключения к базе данных находится в файле .settings.php:

/*
* Файл bitrix/.settings.php
*/
return array (
/*...*/
'connections' => array (
'value' => array (
'default' => array ( // основная база данных
'className' => '\\Bitrix\\Main\\DB\\MysqliConnection',
'host' => 'localhost',
'database' => 'bitrix3', // имя базы данных
'login' => 'bitrix3', // имя пользователя БД
'password' => '.....', // пароль пользователя БД
'options' => 2.0,
),
'additional' => array ( // дополнительная база данных
'className' => '\\Bitrix\\Main\\DB\\MysqliConnection',
'host' => 'localhost',
'database' => 'bitrix4', // имя базы данных
'login' => 'bitrix4', // имя пользователя БД
'password' => '.....', // пароль пользователя БД
'options' => 2.0,
),
),
'readonly' => true,
),
/*..*/
);

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

// соединение с базой данных
$connection = Bitrix\Main\Application::getConnection();
// подготовка строки для использования в sql-запросе
$login = 'admin';
// возвращает объект БД
$sqlHelper = $connection->getSqlHelper();
// подготавливаем строку (заменяет кавычки и прочее) для вставки в SQL запрос
$data = $sqlHelper->forSql($login, 50);
// запрос к БД
$query = "SELECT `NAME`, `LAST_NAME`, `EMAIL` FROM `b_user` WHERE `LOGIN` = '".$data."'";
// метод выполняет запрос к базе данных и если не произошло ошибки возвращает результат
$result = $connection->query($query);
// делает выборку значений полей в массив
if ($user = $result->fetch()) {
PR($user);
}

Получим следующий ответ в виде массива:

Array
(
[NAME] => Сергей
[LAST_NAME] => Иванов
[EMAIL] => ivanov.s@host14.ru
)

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

$query = "SELECT COUNT(`ID`) FROM `b_user` WHERE 1";
$count = $connection->queryScalar($query)

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

$connection->queryExecute("INSERT INTO `some_table` (`NAME`, `SORT`) VALUES ('Название', 100)");

Удалить таблицу

$connection->dropTable($tableName);

Очистить таблицу

$connection->truncateTable($tableName);

Проверить существование таблицы

$connection->isTableExists($tableName);

Переименовать таблицу

$connection->renameTable($oldName, $newName);

Получить поля таблицы

$connection->getTableFields($tableName);

Удалить колонку в таблице

$connection->dropColumn($tableName, $columnName);

Создать первичный ключ

$connection->createPrimaryIndex($tableName, $columnNames);

Создать индекс

$connection->createIndex($tableName, $indexName, $columnNames);

Подробнее можно посмотреть в документации Битрикс.

Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг