2

ここの 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();

    }

私のエラーは 1064error in SQL syntaxです。ローカルで実行すると、DB_driver.php ファイルの行 330 が参照されます。クラウドで実行すると、この行が参照されます$query = $this->db->get($my_sql);。助けてくれてありがとう!

4

4 に答える 4

2

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();
于 2013-01-24T08:15:27.793 に答える
1

http://ellislab.com/codeigniter/user-guide/database/forge.htmlにあるDCL および DDL 操作には Database Forge クラスを使用してください。

于 2013-01-24T08:08:18.390 に答える