繁体   English   中英

CodeIgniter Active Record从一个表插入另一个表

[英]CodeIgniter Active Record insert from one table to another

使用codeigniter活动记录语法将数据从一个表插入另一个表的语法是什么? 我尝试了通常的mysqli查询并且它可以工作,但我想使用CodeIgniter Active Record语法来保持一致性。

我尝试使用这些CodeIgniter Active Record查询,但仍然没有运气:

function insert_into()  
{    
    $this->db->insert('table1');
    $this->db->set('to_column');  
    $this->db->select('from_column');
    $this->db->from('table2');
}

我认为最好的办法是使用get方法从一个表中获取所需的数据,然后使用其中一个查询结果抓取器函数(如result()),使用insert()逐个遍历行。方法。

把它放在代码中:

 $query = $this->db->get('table1'); foreach ($query->result() as $row) { $this->db->insert('table2',$row); } 

当然,我认为table1与table2具有完全相同的结构(每列的列名和数据类型相同)。 如果不是这种情况,则必须使用赋值将列中的列映射到另一个表,但如果是这种情况,则代码将更宽。

将$ source_table复制到$ archive_table中:

if(($this->db->table_exists($source_table) && ($this->db->table_exists($archive_table)){
    if ($this->db->query("CREATE TABLE $archive_table LIKE $source_table")){
        if($this->db->query("INSERT $archive_table SELECT * FROM $source_table")){
           echo 'copied ok';
        }
     } 
}

比循环整个结果集并一次插入一行更整洁。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM