如果使用PHP在Codeigniter中为网站创建数据库表而不进行迁移,这是不是很好的技术


Is it good technique or not if Used PHP to create database tables for website in Codeigniter without migration?

我现在非常担心我的过程,我正在构建许多网站和数据库,现在我开始使用PHP为我的网站创建数据库和表格。我认为当我托管这个网站时,对我来说配置可能很容易,我不需要做或创建数据库手册,我只需从我的一些管理页面单击运行即可运行任何生成数据库的方法,然后结束就可以正常工作。但我关心的是能力或稳定与否,因为我使用了一个函数并将SQL代码发送到服务器,而无需使用Codeigniter Magration

这是我的方法现在这是一个静态方法,但我会更新它,但我想知道将来会发生的原因。因此,如果所有开发人员都有任何经验,请给我一些想法,因为这是我第一次构建。

public function feadback()
    {
        $q = "DROP TABLE IF EXISTS `feadback`;";
        $this->db->query($q);
        $q = "CREATE TABLE IF NOT EXISTS `feadback` (
              `fid` bigint(50) AUTO_INCREMENT,
              `fk_c_id` bigint(50) NOT NULL,
              `fk_group_id` bigint(50),
              `fk_user_id` bigint(50),
              `fk_product_id` bigint(50),
              `feaddata` decimal(10,2) NOT NULL  ,
              `credit` decimal(10,2) NOT NULL  ,
              `b_debit` decimal(10,2) NOT NULL ,
              `b_credit` decimal(10,2) NOT NULL ,
              `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
              PRIMARY KEY (`fid`),
              KEY `fk_c_id` (`fk_c_id`),
              KEY `fk_group_id` (`fk_group_id`),
              KEY `fk_user_id` (`fk_user_id`),
              KEY `fk_product_id` (`fk_product_id`)
            ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=11 ;";
        $this->db->query($q);
        $foriengkey = "ALTER TABLE `feadback` ADD CONSTRAINT `feadback_ibfk_1` FOREIGN KEY (`fk_c_id`) REFERENCES `cat` (`c_id`) ON DELETE CASCADE ON UPDATE CASCADE;";
        return $this->db->query($foriengkey);
    }

非常感谢您的帮助

现代PHP框架都具有迁移功能。 迁移的关键概念是向上/向下迁移,在您的情况下是创建/删除表。如果您认为不需要删除任何表,则您的代码可以正常工作。

在开发环境中,您升级一个表,它工作正常。 但在生产环境中,您的 PHP 升级代码可能会导致异常并使数据库损坏。 但是,如果使用迁移并在数据库升级中出现异常,则迁移将自动回滚。