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

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

Bitrix получить значения списочного поля

В статье приводится пример кода для получения всех вариантов значений пользовательского поля с типом "Список". Так же описано как можно получить конкретный вариант значения поля.

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

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

Команда grep. Примеры использования

grep - удобная и быстрая команда, здесь приведены примеры как произвести рекурсивный поиск в каталоге, поиск среди запущенных процессов и другие.

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

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

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

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

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

В статье приведен пример как выполнить произвольный sql запрос используя стандартные средства Bitrix

Комментарии

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