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