我现在非常担心我的流程,我正在构建许多网站和数据库,现在我开始使用 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/