2013-04-10 31 views
7

私はCodeIgniterを使い慣れていますが、私はCIのドキュメントを読もうとしましたが、まだ問題を解決できません。 。私のモデルでは、私のコントローラエラー:クラスCI_DB_mysql_resultのオブジェクトを文字列に変換できませんでした

class Registration extends CI_Controller{ 

    function __construct(){ 
     parent::__construct(); 
     $this->load->model('registration_model','rmod'); 
    } 

    function ambil() { 

     $gender = $this->input->post('kelamin'); 

     $tinggi = $this->input->post('height'); 

     $berat = $this->input->post('weight'); 

     $weight = $this->rmod->ambilBeratPria($tinggi); 

     echo $weight; 
    } 

function ambilBeratPria($tinggi) { 

    $this->db->select('berat')->from('pria')->where('tinggi',$tinggi); 

    $query = $this->db->get(); 

    return $query;   
} 

私はモデルの私のクエリの結果を取得したいが、私はこのようなエラーが表示されます。ここに私のコードです:

Message: Object of class CI_DB_mysql_result could not be converted to string

多分、ここの誰かが私の問題を解決するのに役立つでしょうか?おかげさまで あなたは、クエリの結果を返す必要が

答えて

8

function ambilBeratPria($tinggi) { 

    $this->db->select('berat')->from('pria')->where('tinggi',$tinggi); 

    $query = $this->db->get(); 

    return $query->result(); 

} 

EDIT:

結果は単一の行である場合:

function ambilBeratPria($tinggi) { 

    $this->db->select('berat')->from('pria')->where('tinggi',$tinggi); 

    $query = $this->db->get(); 

    if ($query->num_rows() > 0) { 
     return $query->row()->berat; 
    } 
    return false; 
} 
+0

お返事ありがとうございます^^ 私はそのように試みました。戻り値はクエリの結果ではなく、コードを実行したときに「配列」のテキストが出てきました... 多分私はコントローラコードに間違っていますか? –

+0

私の編集した回答をご覧ください。 –

+0

私がしようとすると、私はこのようなエラーを持って "非オブジェクトのプロパティを取得しようとしている" 多分私のコードはまだ間違っていますか? ^^ –

2

現在、あなたは直接エコーしようとしています値は$this->db->get();によって返されます。

$query = $this->db->get(); 

が続いて結果を生成するためのいくつかのオプションがあります:あなたはこのようなクエリを生成する場合ただし、クエリからの結果(複数可)を使用するには、generate the results.

する必要があります。これらの例では、返される行に列があり、という重みがであると想定しています。


result()は - あなたがオブジェクトの配列として結果を使用することができます。

if ($query->num_rows() > 0) //Ensure that there is at least one result 
{ 
    foreach ($query->result() as $row) //Iterate through results 
    { 
     echo $row->weight; 
    } 
} 

result_array()は - あなたが配列として結果を使用することができます。


row()

if ($query->num_rows() > 0) //Ensure that there is at least one result 
{  
    foreach ($query->result_array() as $row) //Iterate through results 
    { 
     echo $row['weight']; 
    } 
} 

- あなたが唯一の結果を期待している場合、これは便利です。クエリで複数の結果が生成された場合は、の最初の行のみが返されます。結果をオブジェクトとして使用できるようにします。

if ($query->num_rows() > 0) 
{ 
    $row = $query->row(); 
    echo $row->weight; 
} 

row_array()からrow()と同じですが、あなたが配列として結果を使用することができます。

if ($query->num_rows() > 0) 
{ 
    $row = $query->row_array(); 
    echo $row['weight']; 
} 
+0

説明をありがとう、本当にありがとう! ^^それは働いた^^ –

+0

心配しない、私はそれが喜んで助けた。 – jleft

1

私はCodeIgniterのframework.InでPHPプロジェクトで働いていたとき、私はgetprojectnames(と呼ばれる方法があった私のモデルクラスに存在し、同じエラーを得た)、

public function getprojectnames(){ 

            $result['names']=array(); 
            $this->db->select('name'); 
            $this->db->from('project'); 
            $this->db->where('status','Not Completed'); 
            $query=$this->db->get(); 
            return $query->result(); 
            } 

私がしたかったですコントローラークラスでこの関数を呼び出し、ビュークラスのドロップダウンリストで使用します。私のコントローラクラスでそう

、私のビュークラスで

$this->data['projects'] =$this->testcase_model->getprojectnames(); 
    $this->load->view("admin/_layout_main",$this->data); 

<?php echo form_open('admin/check1'); ?> 
    <div class="row" style=" margin-left: 10px; margin-top: 15px;"> 
     <h5 class="box-title">Projects List &nbsp;&nbsp;&nbsp; : &nbsp; <?    php echo form_dropdown('projects', $projects, 'id'); ?> </h5> 
     <div> 
      <input type="submit" style="width:200px;" class="btn btn-block btn-primary" value="Show Project TestCase Status" /></div> 
    </div> 
    <?php echo form_close();?> 

私はこれを実行して、私はCI_DB_mysql_resultは私がこれを解決しString.Soに変換できませんでした言って、エラーが発生しました問題は、次のようにモデルクラス内のコードを変更して、

public function getprojectnames(){ 

            $result['names']=array(); 
            $this->db->select('name'); 
            $this->db->from('project'); 
            $this->db->where('status','Not Completed'); 
            $query=$this->db->get(); 

            foreach ($query->result() as $row) 
             { 
              array_push($result,$row->name); 
             } 
            return $result; 

             } 

私のプログラムw orked fine。

関連する問題