- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/mysql/database.php
- Класс: CDatabaseMysql
- Вызов: CDatabaseMysql::PrepareInsert
public function PrepareInsert($strTableName, $arFields)
{
$strInsert1 = "";
$strInsert2 = "";
$arColumns = $this->GetTableFields($strTableName);
foreach ($arColumns as $strColumnName => $arColumnInfo)
{
$type = $arColumnInfo["TYPE"];
if (isset($arFields[$strColumnName]))
{
$value = $arFields[$strColumnName];
if ($value === false)
{
$strInsert1 .= ", `" . $strColumnName . "`";
$strInsert2 .= ", NULL ";
}
else
{
$strInsert1 .= ", `" . $strColumnName . "`";
switch ($type)
{
case "datetime":
case "timestamp":
if ($value == '')
{
$strInsert2 .= ", NULL ";
}
else
{
$strInsert2 .= ", " . CDatabase::CharToDateFunction($value);
}
break;
case "date":
if ($value == '')
{
$strInsert2 .= ", NULL ";
}
else
{
$strInsert2 .= ", " . CDatabase::CharToDateFunction($value, "SHORT");
}
break;
case "int":
$strInsert2 .= ", '" . intval($value) . "'";
break;
case "real":
$value = doubleval($value);
if (!is_finite($value))
{
$value = 0;
}
$strInsert2 .= ", '" . $value . "'";
break;
default:
$strInsert2 .= ", '" . $this->ForSql($value) . "'";
}
}
}
elseif (array_key_exists("~" . $strColumnName, $arFields))
{
$strInsert1 .= ", `" . $strColumnName . "`";
$strInsert2 .= ", " . $arFields["~" . $strColumnName];
}
}
if ($strInsert1 != "")
{
$strInsert1 = mb_substr($strInsert1, 2);
$strInsert2 = mb_substr($strInsert2, 2);
}
return [$strInsert1, $strInsert2];
}