Bitrix выполнить sql запрос

Для выполнения произвольных sql запросов к базе данных в Битрикс предусмотрен метод query() у объекта Bitrix\Main\DB\Connection

<?php
$res = \Bitrix\Main\Application::getConnection()->query($sql);

В переменной $sql находится сам запрос, который нужно выполнить.

Каких-либо ограничений нет, в запросе можно использвать сортировку, фильтры, лимиты, join-ы, подзапросы и т.д.

Важно! Так как с помощью этого метода запросы выполняются напрямую к базе, нужно тщательно их проверять, чтобы не удалить или не повредить данные.

Ниже приведены примеры выполнения запросов для стандартных операций чтение/создание/обновление/удаление.

Выборка данных (Select)

Наверное самая частая оперция это выборка данных, тут логика простая, выполнили запрос, далее перебираем строки ответа с помощью метода fetch().

<?php
$sql = 'SELECT `ID`, `FROM_MODULE_ID`, `MESSAGE_ID`, `TO_MODULE_ID`, `TO_CLASS`, `TO_METHOD` FROM `b_module_to_module`  LIMIT 2';
$res = \Bitrix\Main\Application::getConnection()->query($sql);
$arResult = array();
while($row = $res->fetch()) {
	$arResult[] = $row;
}
var_dump($arResult);

Результат выполнения:

array(2) {
  [0]=>
  array(6) {
    ["ID"]=>
    string(4) "1135"
    ["FROM_MODULE_ID"]=>
    string(7) "catalog"
    ["MESSAGE_ID"]=>
    string(38) "Bitrix\Catalog\Model\Price::OnAfterAdd"
    ["TO_MODULE_ID"]=>
    string(7) "catalog"
    ["TO_CLASS"]=>
    string(44) "Bitrix\Catalog\Compatible\EventCompatibility"
    ["TO_METHOD"]=>
    string(22) "handlerPriceOnAfterAdd"
  }
  [1]=>
  array(6) {
    ["ID"]=>
    string(4) "1139"
    ["FROM_MODULE_ID"]=>
    string(7) "catalog"
    ["MESSAGE_ID"]=>
    string(41) "Bitrix\Catalog\Model\Price::OnAfterDelete"
    ["TO_MODULE_ID"]=>
    string(7) "catalog"
    ["TO_CLASS"]=>
    string(44) "Bitrix\Catalog\Compatible\EventCompatibility"
    ["TO_METHOD"]=>
    string(25) "handlerPriceOnAfterDelete"
  }
}

Добавление (Insert)

$sql = 'INSERT INTO `b_iblock_section` (`IBLOCK_ID`, `NAME`) VALUES ("1", "test")';
$res = \Bitrix\Main\Application::getConnection()->query($sql);
// Проверяем количество добавленных строк
var_dump(\Bitrix\Main\Application::getConnection()->getAffectedRowsCount());
// При успешно выполнении запроса для данного примера вернет 1

Проверяем, что запрос выполнился успешно с помощью метода getAffectedRowsCount() так как в данном случаи метод fetch() не подходит.

Обновление (Update)

$sql = 'UPDATE `b_iblock_section` SET `NAME` = "test upd" WHERE `ID` = 2763';
$res = \Bitrix\Main\Application::getConnection()->query($sql);
//Проверяем количество обновленных строк
var_dump(\Bitrix\Main\Application::getConnection()->getAffectedRowsCount());
// При успешно выполнении запроса для данного примера вернет 1

Проверяем, что запрос выполнился успешно с помощью метода getAffectedRowsCount() так как в данном случаи метод fetch() не подходит.

Удаление (Delete)

$sql = 'DELETE FROM `b_iblock_section` WHERE `ID` = 2763';
$res = \Bitrix\Main\Application::getConnection()->query($sql);
//Проверяем количество удаленных строк
var_dump(\Bitrix\Main\Application::getConnection()->getAffectedRowsCount());
// При успешно выполнении запроса для данного примера вернет 1

Проверяем, что запрос выполнился успешно с помощью метода getAffectedRowsCount() так как в данном случаи метод fetch() не подходит.

Рубрики: PHP Bitrix

Если есть вопросы, что-то в статье не понятно или нашли ошибку, напишите об этом в комментариях, все комментарии читаются и по возможности материал будет доработан.
Популярные статьи

Как добавить свою вкладку в карточку элемента СРМ?

Вкладки в карточках элементов CRM очень удобное решение. В этой статье разберем как добавить свою вкладку в карточку элемента CRM с помощью создания обработчика на событие.

Подключить bitrix без подключения шаблона сайта

В статье приводится пример кода подключения bitrix без подключения шаблона сайта. Так же описано когда это может пригодится.

Bitrix сбросить буфер вывода

Функция RestartBuffer() в Bitrix используется для сброса буфера вывода. Она позволяет прервать вывод страницы на определенном этапе выполнения скрипта и начать вывод заново. В статье рассмотрим основные сценарии использования данной функции, рассмотрим пример кода.

Bitrix подключить модуль

Так как bitrix состоит из большого количества различных модулей, знать как их правильно подключать просто необходимо.

Bitrix регистрация своего события

В статье приводится пример регистрации собственного события в bitrix и добавления на него обработчика.

Как в bitrix получить параметры запроса

Из этой статьи вы узнаете, какие классы и методы в bitrix помогут получить данные запроса без использования глобальных переменных. Это важный навык, который обязательно пригодится в вашей работе.

Комментарии

Комментариев пока нет
Данный сайт использует файлы cookies. Продолжая просмотр сайта, вы соглашаетесь с использованием файлов cookies.
ОК