- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/pgsql/database.php
- Класс: CDatabase
- Вызов: CDatabase::PrepareInsert
public function PrepareInsert($strTableName, $arFields)
{
$strInsert1 = "";
$strInsert2 = "";
$this->DoConnect();
$sqlHelper = $this->connection->getSqlHelper();
$arColumns = $this->GetTableFields($strTableName);
foreach ($arColumns as $strColumnName => $arColumnInfo)
{
$type = $arColumnInfo["TYPE"];
if (isset($arFields[$strColumnName]))
{
$strInsert1 .= ", ".$sqlHelper->quote($strColumnName);
$value = $arFields[$strColumnName];
if ($value === false)
{
$strInsert2 .= ", NULL ";
}
else
{
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;
case "bytes":
$strInsert2 .= ", decode('".bin2hex($value)."', 'hex')";
break;
default:
$strInsert2 .= ", '".$sqlHelper->forSql($value)."'";
}
}
}
elseif (array_key_exists("~".$strColumnName, $arFields))
{
$strInsert1 .= ", ".$sqlHelper->quote($strColumnName);
$strInsert2 .= ", ".$arFields["~".$strColumnName];
}
}
if ($strInsert1 != "")
{
$strInsert1 = mb_substr($strInsert1, 2);
$strInsert2 = mb_substr($strInsert2, 2);
}
return array($strInsert1, $strInsert2);
}