• Модуль: 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;
}