• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/pgsql/database.php
  • Класс: CDatabase
  • Вызов: CDatabase::PrepareUpdateBind
public function PrepareUpdateBind($strTableName, $arFields, $strFileDir, $lang, &$arBinds, $strTableAlias = "")
{
	$arBinds = array();
	if ($strTableAlias != "")
		$strTableAlias .= ".";
	$strUpdate = "";

	$this->DoConnect();
	$sqlHelper = $this->connection->getSqlHelper();
	$arColumns = $this->GetTableFields($strTableName);
	foreach ($arColumns as $strColumnName => $arColumnInfo)
	{
		$type = $arColumnInfo["TYPE"];
		if (isset($arFields[$strColumnName]))
		{
			$value = $arFields[$strColumnName];
			if ($value === false)
			{
				$strUpdate .= ", $strTableAlias".$sqlHelper->quote($strColumnName)." = NULL";
			}
			elseif ($value instanceof SqlExpression)
			{
				$strUpdate .= ", $strTableAlias".$sqlHelper->quote($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;
					case "bytes":
						$value = "decode('".bin2hex($value)."', 'hex')";
						break;
					default:
						$value = "'".$sqlHelper->ForSql($value)."'";
				}
				$strUpdate .= ", $strTableAlias".$sqlHelper->quote($strColumnName)." = ".$value;
			}
		}
		elseif (is_set($arFields, "~".$strColumnName))
		{
			$strUpdate .= ", $strTableAlias".$sqlHelper->quote($strColumnName)." = ".$arFields["~".$strColumnName];
		}
	}

	if ($strUpdate != "")
	{
		$strUpdate = mb_substr($strUpdate, 2);
	}

	return $strUpdate;
}