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()- 如果您只期望一个结果,那么这可能很有用。如果查询生成多个结果,则仅返回第一行。允许您将结果用作对象

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 无法转换为字符串。所以我通过更改模型类中的代码来解决这个问题,如下所示,

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 回答