Query
Описание и параметры
mixed CDatabase::Query( string sql, bool ignore_errors=false, string error_position="", array Options=array() )
Метод выполняет запрос к базе данных и если не произошло ошибки возвращает результат. В случае успешного выполнения метод возвращает объект класса CDBResult.
Если произошла ошибка и параметр ignore_errors равен "true", то метод вернет "false".
Если произошла ошибка и параметр ignore_errors равен "false", то метод прерывает выполнение страницы, выполняя перед этим следующие действия:
- Вызов функции AddMessage2Log.
- Если текущий пользователь является администратором сайта, либо в файле /bitrix/php_interface/dbconn.php была инициализирована переменная $DBDebug=true;, то на экран будет выведен полный текст ошибки, в противном случае будет вызвана функция SendError.
- Будет подключен файл /bitrix/php_interface/dbquery_error.php, если он не существует, то будет подключен файл /bitrix/modules/main/include/dbquery_error.php
Примечания для Oracle версии:
1. При возникновении ошибки, если была открыта транзакция, то выполняется CDataBase::Rollback.
2. Для вставки текстовых полей типа BLOB, CLOB, LONG и т.п. (длинною больше 4000 символов), воспользуйтесь методом CDatabase::QueryBind.
3. Если при выполнении SQL-запроса типа "SELECT" требуется связывание переменных, то воспользуйтесь методом CDatabase::QueryBindSelect.
Нестатический метод.
Аналог метода в новом ядре D7 - Bitrix\Main\DB\Connection::query .
Параметры
Параметр | Описание | С версии |
---|---|---|
sql | SQL запрос. | |
ignore_errors | Игнорировать ошибки. Если true, то в случае ошибки функция возвращает "false".
Если параметр ignore_errors равен "false", то в случае ошибки функция прекращает выполнение всей страницы. Необязательный. По умолчанию - "false". | |
error_position | Строка идентифицирующая позицию в коде, откуда была вызвана данная функция CDatabase::Query. Если в SQL запросе будет ошибка и если в файле /bitrix/php_interface/dbconn.php установлена переменная $DBDebug=true;, то на экране будет выведена данная информация и сам SQL запрос. Необязательный. | |
Options | Необязательный. | 9.5.10 |
Примеры использования
<? function GetByID($ID, $GET_BY_SID="N") { $err_mess = (CForm::err_mess())."<br>Function: GetByID<br>Line: "; global $DB; $where = ($GET_BY_SID=="N") ? " F.ID = '".intval($ID)."' " : " F.VARNAME='".$DB->ForSql($ID,50)."' "; $strSql = " SELECT F.*, F.FIRST_SITE_ID, F.FIRST_SITE_ID LID, F.VARNAME, F.VARNAME SID, ".$DB->DateToCharFunction("F.TIMESTAMP_X")." TIMESTAMP_X, count(distinct D1.ID) C_FIELDS, count(distinct D2.ID) QUESTIONS, count(distinct S.ID) STATUSES FROM b_form F LEFT JOIN b_form_status S ON (S.FORM_ID = F.ID) LEFT JOIN b_form_field D1 ON (D1.FORM_ID = F.ID and D1.ADDITIONAL='Y') LEFT JOIN b_form_field D2 ON (D2.FORM_ID = F.ID and D2.ADDITIONAL<>'Y') WHERE $where GROUP BY F.ID "; $res = $DB->Query($strSql, false, $err_mess.__LINE__); return $res; } ?>
elar
|
||
Данный пример говоря программистским языком не совсем рабочий.
Класс 'CForm' не найден, может для этого надо как-то дополнительно объявлять объект. Запрос выдает ошибку т.к. в базе нет определенных полей (что может возникнуть у многих пользователей). Поэтому данный код к сожалению является не лучшим примером, особенно для тех кто имеет не особо сильный опыт в программировании под битрикс. Проще использовать вот такой вариант:
Преимущество этого кода, в том, что он будет выполнятся абсолютно на любой странице сайта и он очень простой. | ||
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.