codeigniter数据库移动到另一个表

时间:2013-11-10 20:03:44

标签: php mysql codeigniter

如何解决这个codeigniter问题:我有一个数据库表(Mysql),我需要使用Php Codeigniter框架将其所有字段内容移动到另一个表?

将数据从一个表插入另一个表的语法是什么,可以在我的模型和表中使用。控制器?

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

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

2 个答案:

答案 0 :(得分:1)

一个简单的就是

INSERT INTO table1 (col1, col2, col3)
SELECT col1, col2, col3
FROM   table2

在CI中使用query()

$this->db->query("INSERT INTO table1 (col1, col2, col3)
    SELECT col1, col2, col3
    FROM   table2");

这是另一种方式

$data = $this->db->select('col1, col2, col3')->get('table2');
if($data->num_rows())
{
    $insert = $this->db->insert('table1', $data->result_array());
}

答案 1 :(得分:1)

首先,获取第一个表tableFrom的内容并迭代结果以将其插入tableTo。您可以在模型中使用此代码。不要忘记控制器或功能中的$this->load->database();

function insert_into() {
    $q = $this->db->get('tableFrom')->result(); // get first table
    foreach($q as $r) { // loop over results
        $this->db->insert('tableTo', $r); // insert each row to another table
    }
}

@EDIT

为您的控制器试用此代码:

<?php
class fdm extends CI_Controller {
    function __construct() {
        parent::__construct();
        $this->load->library(array('table','form_validation'));
        $this->load->helper('url'); // load model
        $this->load->model('cbc','',TRUE);
    }

    function index() {
        $this->load->database();
        $this->load->model('cbc','',TRUE);

        $this->cbc->insert_into();
    } 
}

要修复密钥1的重复条目错误,您可能希望在从表2导入内容之前截断第一个表。你可以这样做:

function insert_into() {
    $this->db->truncate('tableTo');
    $q = $this->db->get('tableFrom')->result(); // get first table
    foreach($q as $r) { // loop over results
        $this->db->insert('tableTo', $r); // insert each row to another table
    }
}

或者您可以更新行而不是插入新的:

function insert_into() {
        $q = $this->db->get('tableFrom')->result(); // get first table
        foreach($q as $r) { // loop over results
            $this->db->update('tableTo', $r, array('id' => $r->id)); // insert each row to another table
        }
    }