Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Codeigniter$此->;db->;查询无法使用有效的本机SQL_Mysql_Codeigniter - Fatal编程技术网

Mysql Codeigniter$此->;db->;查询无法使用有效的本机SQL

Mysql Codeigniter$此->;db->;查询无法使用有效的本机SQL,mysql,codeigniter,Mysql,Codeigniter,我在这里遵循了CI用户指南http://ellislab.com/codeigniter/user-guide/database/queries.html,我仍然无法使此查询正常工作。我可以在不使用“”的情况下将这段代码粘贴到工作台中,它运行良好,因此我不确定CI语法哪里有错误。 这是: public function test(){ ini_set('memory_limit','-1') $my_sql = $this->db->query

我在这里遵循了CI用户指南
http://ellislab.com/codeigniter/user-guide/database/queries.html
,我仍然无法使此查询正常工作。我可以在不使用“”的情况下将这段代码粘贴到工作台中,它运行良好,因此我不确定CI语法哪里有错误。 这是:

    public function test(){
        ini_set('memory_limit','-1')
        $my_sql = $this->db->query( 

            'DROP TABLE temp1;
            DROP TABLE temp2;
            CREATE TEMPORARY TABLE temp1 (id varchar(150),user varchar(150),item varchar(150),city varchar(150));
            INSERT INTO  temp1 SELECT id, user, item, city FROM add WHERE user = 1;
            CREATE TEMPORARY TABLE temp2 (id varchar(50),vendor varchar(50)) ;
            INSERT INTO temp2 SELECT id, vendor FROM selection;
            SELECT a.user, a.id, a.item, a.city, b.vendor
            FROM temp1 a 
            RIGHT JOIN temp2 b ON a.id=b.id;'
        );

        $query = $this->db->get($my_sql);
        return $query->result_array();

    }

我的错误是1064
SQL语法错误
。当我在本地运行它时,它引用DB_driver.php文件第330行。在云中运行时,它引用此行
$query=$this->db->get($myu-sql)。谢谢你的帮助

请使用Database Forge类进行DCL和DDL操作
在此处找到。

请使用Database Forge类进行DCL和DDL操作 在此处找到。

无需
get()
,因为您已经调用了
query()

get运行选择查询并返回结果。它本身可以用于从表中检索所有记录

试试这个

 $my_sql = $this->db->query( 

        'DROP TABLE temp1;
        DROP TABLE temp2;
        CREATE TEMPORARY TABLE temp1 (id varchar(150),user varchar(150),item varchar(150),city varchar(150));
        INSERT INTO  temp1 SELECT id, user, item, city FROM add WHERE user = 1;
        CREATE TEMPORARY TABLE temp2 (id varchar(50),vendor varchar(50)) ;
        INSERT INTO temp2 SELECT id, vendor FROM selection;
        SELECT a.user, a.id, a.item, a.city, b.vendor
        FROM temp1 a 
        RIGHT JOIN temp2 b ON a.id=b.id;'
    );

    return $my_sql->result_array();
无需
get()
,因为您已经调用了
query()

get运行选择查询并返回结果。它本身可以用于从表中检索所有记录

试试这个

 $my_sql = $this->db->query( 

        'DROP TABLE temp1;
        DROP TABLE temp2;
        CREATE TEMPORARY TABLE temp1 (id varchar(150),user varchar(150),item varchar(150),city varchar(150));
        INSERT INTO  temp1 SELECT id, user, item, city FROM add WHERE user = 1;
        CREATE TEMPORARY TABLE temp2 (id varchar(50),vendor varchar(50)) ;
        INSERT INTO temp2 SELECT id, vendor FROM selection;
        SELECT a.user, a.id, a.item, a.city, b.vendor
        FROM temp1 a 
        RIGHT JOIN temp2 b ON a.id=b.id;'
    );

    return $my_sql->result_array();

您需要直接从$my_sql返回结果,只需使用以下命令: 返回
$my_sql->result_array()或此项了解更多信息:

if ($my_sql-> num_rows() > 0) {
    $result = $my_sql-> result();
    return $result;
} else {
    return FALSE;
}

您需要直接从$my_sql返回结果,只需使用以下命令: 返回
$my_sql->result_array()或此项了解更多信息:

if ($my_sql-> num_rows() > 0) {
    $result = $my_sql-> result();
    return $result;
} else {
    return FALSE;
}

问题是CI默认使用mysql PHP API,运行->query最终会运行mysql_query函数,该函数不允许使用多个SQL语句(出于安全原因)。
看起来mysqli API有一个multi_查询函数,它允许执行多个查询。
另一个选项是使用正则表达式将包含多个查询的字符串拆分为子查询。

问题是CI默认使用mysql PHP API,而运行->query最终运行mysql_query函数,该函数不允许使用多个SQL语句(出于安全原因)。
看起来mysqli API有一个multi_查询函数,它允许执行多个查询。
另一个选项是使用正则表达式将包含多个查询的字符串拆分为子查询。

谢谢!我做了这些更改,但仍然收到相同的错误。谢谢bipen!我做了这些更改,但仍然收到相同的错误。