О web-разработке
и даже немного больше...

Как выполнить SQL запрос в Bitrix

Получение данных посредством методов в системе битрикс довольно распространенная практика, и действительно существуют множество методов, которые осуществляют самостоятельную выборку данных из базы. Мы же передаем некоторые параметры методу, в виде массива, такие, к примеру, как параметры сортировки, фильтра, выборки и так далее. Но как быть, если есть необходимость выполнить SQL запрос самому. Скажем вам по каким либо причинам не подходит ни один метод для работы с данными, и вы решили реализовать свои запросы напрямую в базу. Как не странно, но для этого есть так же API, а точнее метод, который позволит выполнить подобные запросы в базу, что тоже удобно. Т.к. подключение к базе и прочие предварительные действия, при работе сервером базы данных выполняет за вас битрикс сам.

Чтобы выполнить запросы в базу данных в Bitrix, можно воспользоваться методом CDatabase::Query. Данный метод в случае успешного выполнения возвращает объект класса CDBResult. Согласно синтаксису использования метода, регламентированный в документации метод может принимать четыре параметра, далее по порядку.

sql – SQL запрос который нам следует выполнить, является обязательным параметром;
ignore_errors – Игнорирование ошибок, в случае, если параметр установлен в значение «true», то при возникновении ошибок, метод вернет в качестве результата – false. В ином случае в случае возникновение ошибки будет прекращать выполнение всего скрипта. Параметр необязательный.
error_position – Строка, определяющая позицию в коде где обращались к методу CDatabase::Query. В случае возникновения ошибки выполнения SQL запроса, и наличии установленной переменной $DBDebug=true в файле /bitrix/php_inerface/dbconn.php, будет отображена информация, а так же сам SQL запрос. Параметр является необязательным.
Options – Дополнительные опции, подробно об этом параметре в документации на данный момент нет информации. Является необязательным параметром.
Теперь давайте рассмотрим простой пример выполнения SQL запроса. Первым делом к скрипту нам необходимо подключить API битрикса. В данном примере попробуем обновить записи элемента информационного блока.

// подключение API Bitrix
require_once($_SERVER['DOCUMENT_ROOT']."/bitrix/modules/main/include/prolog_before.php");

global $DB;

	$res = $DB->Query(
				"UPDATE b_iblock_element SET
					`PREVIEW_PICTURE` = '1755',
					`DETAIL_PICTURE` = '1755',
					`PREVIEW_TEXT` = 'Текст для анонса',
					`DETAIL_TEXT` = 'Текст для детального описания',
					`PREVIEW_TEXT_TYPE` = 'text',
					`DETAIL_TEXT_TYPE` = 'text'
				WHERE `ID` = '7899822"
			);

Если вы заглядывали в структуру таблиц баз данных системы bitrix, то, наверное, уже догадались, что в таблице b_iblock_element содержатся базовые поля элементов инфоблока. Данный запрос обновит значения некоторых полей элемента, у которого ID = 7899822. Таким же образом можно выполнять и другие SQL запросы в базу, а самое главное не перестараться и не сделать так, чтобы от подобного воздействия появилось некорректное работы самой системы битрикс. На этом всё, успехов!

Опубликован: 18.10.2016 г.

См. также:

«Не удалось установить соединение с сервером. Проверьте …».
Получение Email-адреса покупателя в заказе (Bitrix D7)
Работа с URL-адресами в Bitrix D7
Работа с купонами в Bitrix API
Добавляем пункт меню для списков в админке Битрикс
Диалоговые окна в Bitrix API
Создание инфоблока при установке модуля
Создание копии корзины из заказа на Bitrix D7

Комментарии

  1. sonicgod пишет:

    Спасибо за материал. Но для добавления записи лучше всё же использовать другую функцию БУС $DB->Insert

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии
  • Загрузка...
Друзья сайта