PHP-Codeigniter 2.0一次在两个表中插入记录

我不确定如何使用活动记录或手动sql处理此问题.我想要做的是将记录添加到具有自动递增ID的“联系人”表中,然后将记录添加到具有相应“联系人”记录ID的ID的“订单”表中.

我知道我可以使用$this-> db-> insert_id()获得插入的联系人记录的ID,但这仅在使用活动记录时有效吗?

另外,我可以在一个查询中实现这种插入,还是必须将其拆分为两个?

解决方法:

$this-> db不引用Active Record.您必须选择使用Active Record,$this-> db仅指数据库抽象层.

就是说,您可以在查询(无论是否为Active Record)之后立即使用$this-> db-> insert_id()来获取其插入ID.

但是要处理一次插入依赖于彼此ID的多个记录,我将切换为InnoDB作为您的表类型(如果还没有的话),并使用CodeIgniter的transactions.

这是一个示例,改编自CodeIgniter的文档:

$this->db->trans_start();

$this->db->query('INSERT INTO table1 VALUES(id,field1,field2)');
$table1_id = $this->db->insert_id();

$this->db->query('INSERT INTO table2 VALUES(id,' . $table1_id . ',field2,field3)');

$this->db->trans_complete(); 
上一篇:PHP-从数组中的每个值中删除破折号,然后重建数组


下一篇:使用旧版Codeigniter网站设置魔术引号PHP错误