7

私は CodeIgniter を初めて使用します。CI のドキュメントを読み込もうとしましたが、まだ問題を解決できません。ここの誰かが私の問題を解決してくれるかもしれません。これが私のコードです:

私のコントローラーで

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

多分ここの誰かが私の問題を解決するのを助けることができますか? ありがとう。

4

3 に答える 3

9

クエリの結果を返す必要があります。

function ambilBeratPria($tinggi) {

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

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

     return $query->result();

}

編集:

結果が単一行の場合:

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;
}
于 2013-04-10T16:49:36.267 に答える
3

現在、によって返された値を直接エコーしようとしています$this->db->get();。ただし、クエリの結果を使用するには、結果を生成する必要があります。

次のようなクエリを生成する場合:

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

次に、結果を生成するためのいくつかのオプションがあります。これらの例では、返される行にweightという列があることを前提としています。


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()- 結果を配列として使用できます。

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'];
    }
}

row()- 1 つの結果のみを期待している場合は、これが役立ちます。クエリが複数の結果を生成する場合、最初の行のみが返されます。結果をオブジェクトとして使用できます。

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'];
}
于 2013-04-10T17:08:50.787 に答える
1

Code Igniter フレームワークを使用して 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 に変換できないというエラーが表示されたので、モデル クラスのコードを次のように変更してこの問題を解決しました。

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;

                                       }

その後、私のプログラムはうまくいきました。

于 2015-09-11T22:50:52.107 に答える