Документация для разработчиков

Insert

mixed
CDatabase::Insert(
 string table,
 array fields,
 string error_position = "",
 bool debug = false,
 int exist_id = "",
 bool ignore_errors = false
)

Метод вставляет запись в таблицу table с значениями полей fields. Необходимые условия использования данной метода:

  • Необходимо наличие поля "ID" в таблице, представляющее из себя Primary Key для данной таблицы.
  • Для MySQL поле "ID" должно быть auto increment (если при вызове метода явно не задается параметр exist_id).
  • Для Oracle обязательно наличие sequence (последовательности) с именем вида "SQ_.table".
Возвращает ID вставленной записи или false в случае ошибки.

Примечание. Если необходимо вставить запись с определенным ID и при этом указать его в параметре fields, то метод возвращает 0, при этом запись вставляется. Если необходимо, чтобы метод вернул ID, который вы указывали, то его необходимо указывать в параметре exist_id.

Примечание: все значения полей должны быть подготовлены для SQL запроса, например, при помощи метода CDatabase::ForSql.

Нестатический метод.

Параметры

ПараметрОписание С версии
table Название таблицы.
fields Массив вида значений полей "поле"=>"значение",...
error_position Строка идентифицирующая позицию в коде, откуда была вызвана данная функция CDatabase::Insert. Если в SQL запросе будет ошибка и если в файле /bitrix/php_interface/dbconn.php установлена переменная $DBDebug=true;, то на экране будет выведена данная информация и сам SQL запрос.
debug Если значение - "true", то на экран будет выведен текст SQL запроса.
exist_id Если данный параметр задан в виде положительного числа, то при вставке записи в таблицу, будет добавлено поле с именем "ID" и значением exist_id. Если данный параметр явно не задан, то для Oracle таблицы будет добавлено поле "ID", со значением SQ_table.nextval().
ignore_errors если значение "true", то в случае ошибки возникшей в результате выполнения SQL запроса, она будет проигнорирована и работа скрипта продолжена. 3.2.7

См. также

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

<?
if (strlen($save)>0)
{
    if (CheckFields())
    {
        $DB->PrepareFields("b_form");
        $arFields = array(
            "TIMESTAMP_X"             => $DB->GetNowFunction(),
            "NAME"                    => "'".trim($str_NAME)."'",
            "VARNAME"                 => "'".trim($str_VARNAME)."'",
            "C_SORT"                  => "'".intval($str_C_SORT)."'",
            "FIRST_SITE_ID"           => "'".$DB->ForSql($FIRST_SITE_ID,2)."'",
            "BUTTON"                  => "'".$str_BUTTON."'",
            "DESCRIPTION"             => "'".$str_DESCRIPTION."'",
            "DESCRIPTION_TYPE"        => "'".$str_DESCRIPTION_TYPE."'",
            "SHOW_TEMPLATE"           => "'".trim($str_SHOW_TEMPLATE)."'",
            "MAIL_EVENT_TYPE"         => "'".$DB->ForSql("FORM_FILLING_".$str_VARNAME,50)."'",
            "SHOW_RESULT_TEMPLATE"    => "'".trim($str_SHOW_RESULT_TEMPLATE)."'",
            "PRINT_RESULT_TEMPLATE"   => "'".trim($str_PRINT_RESULT_TEMPLATE)."'",
            "EDIT_RESULT_TEMPLATE"    => "'".trim($str_EDIT_RESULT_TEMPLATE)."'",
            "FILTER_RESULT_TEMPLATE"  => "'".trim($str_FILTER_RESULT_TEMPLATE)."'",
            "TABLE_RESULT_TEMPLATE"   => "'".trim($str_TABLE_RESULT_TEMPLATE)."'",
            "STAT_EVENT1"             => "'".trim($str_STAT_EVENT1)."'",
            "STAT_EVENT2"             => "'".trim($str_STAT_EVENT2)."'",
            "STAT_EVENT3"             => "'".trim($str_STAT_EVENT3)."'"
            );
		$DB->StartTransaction();
        if ($ID>0) 
        {
            $DB->Update("b_form", $arFields, "WHERE ID='".$ID."'", $err_mess.__LINE__);
        }
        else 
        {
            $ID = $DB->Insert("b_form", $arFields, $err_mess.__LINE__);
            $new="Y";
        }
        $ID = intval($ID);
        if (strlen($strError)<=0) 
        {
            $DB->Commit();
            if (strlen($save)>0) LocalRedirect("form_list.php?lang=".LANGUAGE_ID);
            elseif ($new=="Y") LocalRedirect("form_edit.php?lang=".LANGUAGE_ID."&ID=".$ID);
        }
        else $DB->Rollback();
    }
}
?>


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
© «Битрикс», 2001-2019, «1С-Битрикс», 2019
Наверх