0

WAMP サーバー 2.4 を使用しています。データベースで個別の月の数を取得しようとしていますが、このエラーが発生します「オブジェクト以外のresult_array()でメンバー関数row()を呼び出します」。これは私のモデルクラスのコードです

public function get_current_month()
{

    $this->db->select('(COUNT(DISTINCT  Month))' );
    $this->db->from('site_data');
    $this->db->where('year =(');
    $this->db->select('MAX(year )');
    $this->db->from('site_data)');
    $query = $this->db->get();


    return $query->result_array(); //error here

}

これを使用すると、コード内のサブクエリと関係があると思います

public function get_current_month()
{

    $this->db->select('(COUNT(DISTINCT  Month))' );
    $this->db->from('site_data');
    $this->db->where('year =2013');
    //$this->db->select('MAX(year )');
    //$this->db->from('site_data)');
    $query = $this->db->get();


    return $query->result_array();

}

それはうまく機能しています。コードイグナイターを使用しています

ここで何がうまくいかないのか誰にも分かりますか。

これはデータベースでテストしたクエリで、完全に機能しています

SELECT (COUNT(DISTINCT MONTH))
FROM site_data
WHERE YEAR = ( 
    SELECT MAX(YEAR) 
    FROM site_data
)
4

3 に答える 3

0

私は CI の通過経験しかありませんが、db->select などをネストしてサブクエリを呼び出そうとする方法が正しくないことは明らかです。サブクエリを構築する方法があるかもしれませんが...

簡単にするために、これを試すことができます:

public function get_current_month()
{

    $this->db->select('(COUNT(DISTINCT  Month))' );
    $this->db->from('site_data');
    $this->db->where('year =( SELECT MAX(year) FROM site_data)');
    $query = $this->db->get();


    return $query->result_array(); //error here

}

それが機能する場合、なぜそれをより複雑にするのですか?

于 2013-10-10T20:04:48.953 に答える
0

どうもありがとう。データベースから MAX(年) を取得し、その値を関数に渡す関数を追加するのは簡単だと思いました。

私はこのようにそれを解決しました

public function get_current_month($Year)
{
    $MAXYear=$Year;
    $this->db->select('(COUNT(DISTINCT  Month))' );
    $this->db->from('site_data');
    $this->db->where('year',$MAXYear);
    $query = $this->db->get();

    return $query->result_array();

}

year は、コントローラーから get_current_month() に渡す値です。

それは魅力のように機能します。

ご提案いただきありがとうございます。

于 2013-10-11T02:14:47.130 に答える
0

サブクエリを->where()呼び出しに手作りするか、サードパーティのライブラリを使用する必要があるようです。同様の問題を扱うcodeigniter アクティブ レコードのサブクエリを参照してください。

于 2013-10-10T18:23:08.243 に答える