2012-01-18 27 views
4

私はテーブルからcodeigniterで最大値を取得しようとしていますが、動作していません。これは私が取得エラーです:select max codeigniter

重要度:4096

メッセージ:クラスCI_DB_mysql_resultのオブジェクトが 文字列に変換することができませんでした

ファイル名:データベース/ DB_active_rec.php

行番号:427

これは私の関数です:

public function getPeriodeNummer($bedrijf_id) { 
    $this->db->select_max('id'); 
    $this->db->where('bedrijf_id', $bedrijf_id); 
    $result = $this->db->get('rapporten'); 

    $this->db->select('periode_nummer'); 
    $this->db->where('rapporten_id', $result); 
    $query = $this->db->get('statistieken_onderhoud'); 

    $data = $query + 1; 

    return $data; 
} 

は何をしようとしているイム続くようです:

  1. rapportenから最高idbedrijf_id = $bedrijf_idを選択します。
  2. rapporten_idは私がステップ2から得たperiode_nummerreturnその数に1を加えるステップ1.
  3. からもらった最高idを=どこperiode_nummerstatistieken_onderhoudから選択します。

お寄せいただきありがとうございます!

答えて

12

は、あなたが文字列としてオブジェクトを使用することはできません

public function getPeriodeNummer($bedrijf_id) { 
    $this->db->select_max('id'); 
    $this->db->where('bedrijf_id', $bedrijf_id); 
    $res1 = $this->db->get('rapporten'); 

    if ($res1->num_rows() > 0) 
    { 
     $res2 = $res1->result_array(); 
     $result = $res2[0]['id']; 

     $this->db->select('periode_nummer'); 
     $this->db->where('rapporten_id', $result); 
     $query = $this->db->get('statistieken_onderhoud'); 

     if ($query->num_rows() > 0) 
     { 
      $row = $query->result_array(); 
      $data['query'] = 1 + $row[0]['periode_nummer']; 
     } 

     return $data['query']; 
    } 

    return NULL; 
} 
+1

これは完璧ですそこから学ぶために何をしているのかを見極める挑戦。しかし、それは動作します、ありがとう! – Augus

+0

@Angus - [サンプルクエリ](http://codeigniter.com/user_guide/database/examples.html)と[アクティブレコード](http://codeigniter.com/user_guide/database)のCodeIgniterのユーザーガイドのエントリを参照してください/active_record.html)を参照してください。 – stealthyninja

0

私は$query変数は、mysqlの結果リソースを保持していると思う、それは文字列またはこの場合は整数として使用することはできません。

あなたはこの方法を試すことができます:

$data = mysql_result($query,0) + 1; 
+0

私は '$ result'とmysql_resultを作成しようとしましたが、このエラーが出ました。'メッセージ:mysql_result()はパラメータ1がリソースであり、与えられたオブジェクトであることを期待しています ' – Augus

1

を試してみてください。これを使用します。

public function getPeriodeNummer($bedrijf_id) { 
    $this->db->select_max('id'); 
    $this->db->where('bedrijf_id', $bedrijf_id); 
    $result = $this->db->get('rapporten'); 

    $this->db->select('periode_nummer'); 
    $this->db->where('rapporten_id', $result); 
    $query = $this->db->get('statistieken_onderhoud'); 
    // fetch first row in object 
    $result = $query->row(); 
    $data = $result + 1; 

    return $data; 
} 
1

はこれを試してみてください:

$this->db->select_max('display_sequence'); 
    $this->db->from('acl_menu'); 
    $query = $this->db->get(); 
    $r=$query->result(); 

表示順序が& acl_menuがあなたのテーブル名は、あなたの列名です。

関連する問題