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() не подходит.

Если вам нужно узнать, как Bitrix формирует свои запросы, вы можете воспользоваться методом getSql(). Более подробную информацию вы найдете в этой статье.

Рубрики: PHP Bitrix SQL

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

Bitrix Вывести sql запрос

Порой нужно получить сформированный с помощью ORM sql запрос. Например чтобы проверить, что выбираются нужные данные с нужными фильтрами. Для таких случаев предусмотрен метод startTracker(). Подробнее о том как его использовать описано в статье.

Что такое центральный банк?

Что такое центральный банк и как он влияет на экономику? Узнайте о функциях, задачах и механизмах работы центрального банка. О том  как центральный банк регулирует финансовую систему и обеспечивает стабильность экономики.

ТОП-10 полезных функций PHP, которые упростят разработку

В данной статье мы рассмотрим 10 наиболее полезных функций, которые могут значительно упростить разработку и сэкономить время.

Bitrix Получить ID инфоблока для элемента по его ID

В статье приводится пример того как можно получить ID инфоблока зная ID его элемента.

Битрикс пропали статусы веб-форм

В статье описана новая настройка модуля веб-форм которая скрывает вкладки Статусы и Поля со страницы редактирования веб-формы

Bitrix подключить класс компонента

В статье приводится пример того как можно подключить только компонент битрикс без подключения его шаблона, чтобы можно было вызвать его метод или получить значения свойств

Комментарии

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