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