• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/mysql/database.php
  • Класс: CDatabaseMysql
  • Вызов: CDatabaseMysql::PrepareInsert
public function PrepareInsert($strTableName, $arFields)
{
	$strInsert1 = "";
	$strInsert2 = "";

	$arColumns = $this->GetTableFields($strTableName);
	foreach ($arColumns as $strColumnName => $arColumnInfo)
	{
		$type = $arColumnInfo["TYPE"];
		if (isset($arFields[$strColumnName]))
		{
			$value = $arFields[$strColumnName];

			if ($value === false)
			{
				$strInsert1 .= ", `" . $strColumnName . "`";
				$strInsert2 .= ",  NULL ";
			}
			else
			{
				$strInsert1 .= ", `" . $strColumnName . "`";
				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;
					default:
						$strInsert2 .= ", '" . $this->ForSql($value) . "'";
				}
			}
		}
		elseif (array_key_exists("~" . $strColumnName, $arFields))
		{
			$strInsert1 .= ", `" . $strColumnName . "`";
			$strInsert2 .= ", " . $arFields["~" . $strColumnName];
		}
	}

	if ($strInsert1 != "")
	{
		$strInsert1 = mb_substr($strInsert1, 2);
		$strInsert2 = mb_substr($strInsert2, 2);
	}
	return [$strInsert1, $strInsert2];
}