【问题标题】:Error : Object of class CI_DB_mysql_result could not be converted to string错误:CI_DB_mysql_result 类的对象无法转换为字符串
【发布时间】:2013-04-10 16:43:41
【问题描述】:

我是 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

也许这里有人可以帮助解决我的问题? 谢谢。

【问题讨论】:

    标签: php mysql database codeigniter


    【解决方案1】:

    目前您正尝试直接回显$this->db->get(); 返回的值。但是,要使用查询的结果,您需要 generate the results.

    如果你生成这样的查询:

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

    【讨论】:

    • 非常感谢您的解释,非常感谢! ^^成功了^^
    • 不用担心,我很高兴它有帮助。
    【解决方案2】:

    需要返回查询结果:

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

    【讨论】:

    • 感谢您的回答^^我已经尝试过。返回不是查询的结果,而是当我运行代码时出现的“数组”文本......也许我在控制器代码上出错了??
    • 当我尝试时,我得到了这样的错误“尝试获取非对象的属性”也许我的代码仍然错误? ^^
    • 表示没有结果。您可以在返回结果之前查看if $query->num_rows() > 0
    • 太棒了!!有用 !非常感谢,非常感谢^^
    • 很高兴它有帮助。请接受对您帮助最大的答案。
    【解决方案3】:

    我在使用 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;
    
                                           }
    

    然后我的程序运行良好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-03
      • 2014-11-21
      • 2015-02-05
      • 2012-07-12
      • 1970-01-01
      相关资源
      最近更新 更多