php - 如果使用PHP在Codeigniter中为网站创建数据库表而无需迁移,这是不是好技术?

标签 php mysql codeigniter 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 升级代码可能会导致异常并导致数据库损坏。但如果您使用Migration,并且在数据库升级过程中出现异常,Migration会自动回滚。

关于php - 如果使用PHP在Codeigniter中为网站创建数据库表而无需迁移,这是不是好技术?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35462018/

相关文章:

php - 如何使用ajax和php在没有表单的情况下使用复选框将数据插入数据库

php - Magento - 拉一个单一的客户评论

用于短信功能的 php 脚本

mysql - Ruby on Rails:解压缩(Zlib::Deflate)在一定时间后不起作用

mysql - 如何从存储过程中的单个选择查询设置多个输出变量值

php - 在codeigniter中上传图片

javascript - 学生已存在注册系统验证 (Codeigniter)

php - 过滤mysql数据以进行图表可视化

php - Laravel 4 Beta 5 session 扩展/替换

mysql - 创建过程 mysql CRUD 时出错