function db_field_set_create($table_name, $field_set) { !sn_db_field_set_is_safe($field_set) ? $field_set = sn_db_field_set_make_safe($field_set) : false; sn_db_field_set_safe_flag_clear($field_set); $values = implode(',', $field_set); $fields = implode(',', array_keys($field_set)); return classSupernova::db_query("INSERT INTO `{{{$table_name}}}` ({$fields}) VALUES ({$values});"); }
public static function db_ins_field_set($location_type, $field_set, $serialize = false) { // TODO multiinsert ? !sn_db_field_set_is_safe($field_set) ? $field_set = sn_db_field_set_make_safe($field_set, $serialize) : false; sn_db_field_set_safe_flag_clear($field_set); $values = implode(',', $field_set); $fields = implode(',', array_keys($field_set)); $table_name = static::$location_info[$location_type][P_TABLE_NAME]; if ($result = static::db_query("INSERT INTO `{{{$table_name}}}` ({$fields}) VALUES ({$values});")) { if (db_affected_rows()) { // Обновляем данные только если ряд был затронут $record_id = db_insert_id(); // Вытаскиваем запись целиком, потому что в $set могли быть "данные по умолчанию" $result = static::db_get_record_by_id($location_type, $record_id); // Очищаем второстепенные кэши - потому что вставленная запись могла повлиять на результаты запросов или локация или еще чего // TODO - когда будет поддержка изменения индексов и локаций - можно будет вызывать её static::cache_clear($location_type, false); // Мягкий сброс - только $queries } } return $result; }