使用Codeigniter执行muliple sql语句

时间:2015-10-09 12:01:22

标签: mysql sql codeigniter codeigniter-2

因此,事实证明Codeigniter一次只能执行1个以上的SQL语句。

在此过程中,这是使用$('#details') .stop()//stop all running animations .animate(//start a new animation {height:'50px', marginTop:'350px'}, 600, 'easeInOutBounce' ); trans_start函数,但是,这不适用于创建临时表。

trans_complete

以上代码生成以下错误:

    $this->db->trans_start();
    $this->db->query( 'CREATE TEMPORARY TABLE tmptable_1;');
    $this->db->query( 'SELECT * FROM banner_data WHERE id = '.$id.';');
    $this->db->query( 'UPDATE tmptable_1 SET id = NULL;');
    $this->db->query( 'INSERT INTO banner_data SELECT * FROM tmptable_1;');
    $this->db->query( 'DROP TEMPORARY TABLE IF EXISTS tmptable_1;');
    $this->db->trans_complete(); 

有没有办法一次执行整个SQL块?

2 个答案:

答案 0 :(得分:2)

错误简单地指出你。

  

表格必须包含至少1列

所以create Query应该是这样的。 (提供将存储数据的所有表列名称)

SQL CREATE TABLE语法

CREATE TABLE table_name
(
    column_name1 data_type(size),
    column_name2 data_type(size),
    column_name3 data_type(size),
    ....
);

<强> 实施例

CREATE TABLE Persons
(
    PersonID int,
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
);

答案 1 :(得分:0)

我找到了解决这个问题的方法:

    $this->db->trans_start();
    $this->db->query( 'CREATE TEMPORARY TABLE tmptable_1 SELECT * FROM banner_data WHERE id = '.$id.';');
    $this->db->query( 'UPDATE tmptable_1 SET id = NULL;');
    $this->db->query( 'INSERT INTO banner_data SELECT * FROM tmptable_1;');
    $this->db->query( 'DROP TEMPORARY TABLE IF EXISTS tmptable_1;');
    $this->db->trans_complete(); 

通过合并原始的前两行,数据库根据要复制的表的结构构建表列。