使用 Codeigniter 执行多个 sql 语句

Executing muliple sql statements with Codeigniter

所以事实证明,Codeigniter 很难一次执行超过 1 个 SQL 语句。

绕过这一步是使用 trans_starttrans_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(); 

以上代码产生以下错误:

A table must have at least 1 column

CREATE TEMPORARY TABLE tmptable_1;

Filename: models/Banners_generator_model.php

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

这个错误简单点你。

A table must have at least 1 column

所以创建Query应该是这样的。 (给出您将存储数据的所有 table 列名称)

SQL 创建 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)
);

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

    $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(); 

通过合并原来的前两行,数据库根据您要从中复制的 table 的结构构建 table 列。