如何解决这个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');
}
答案 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
}
}