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