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;
}
?>