print()函数!错误4096对象无法转换为字符串

时间:2011-08-01 12:21:33

标签: php codeigniter printf

我有一个名为 $ result 的变量,它应该存储我的数据库查询的所有结果,但是当我运行print($ result)时,它会给出一条错误消息:

  

遇到PHP错误

     

严重程度:4096

     

消息:无法将类CI_DB_mysql_result的对象转换为   串

     

文件名:models / control_panel_model.php

     

行号:72

这是我的型号代码:

public function view_record($record_id)
        {
            $criteria = array 
            (
                'procedure_id' => $record_id
            );

            echo $this->db->count_all('procedure');
            return;
            $this->db->select('procedure.procedure_id, procedure.patient_id, procedure.department_id, procedure.name_id , procedure.dosage_id');
            $this->db->from ('procedure');

            $this->db->join('patient', 'patient.patient_id = procedure.patient_id', 'inner');
            $this->db->join('department', 'department.department_id = procedure.department_id', 'inner');
            $this->db->join('procedure_name', 'procedure_name.procedure_name_id = procedure.name_id', 'inner');
            $this->db->join('dosage', 'dosage.dosage_id = procedure.dosage_id', 'inner');

            $this->db->where('procedure_id', $record_id);
            $result = $this->db->get();


            print($result);


            return ;


        }

我使用打印功能的原因只是测试我的查询是否正常并且有值。我如何实现这一目标。

由于

EDIT !!!

这是我在var_dump();

中得到的
object(CI_DB_mysql_result)#22 (8) { 
  ["conn_id"]=> resource(30) of type (mysql link persistent)
  ["result_id"]=> resource(40) of type (mysql result)
  ["result_array"]=> array(0) { }
  ["result_object"]=> array(0) { }
  ["custom_result_object"]=> array(0) { }
  ["current_row"]=> int(0)
  ["num_rows"]=> int(0) 
  ["row_data"]=> NULL
}

我添加了以下代码:

  

if($ result-> num_rows> 0){                 回声“数据”;                             }                         其他{                 回声“无数据”;                         }

这就是说“没有数据”所以我的查询必须是废话和错误,所以我需要重新设计查询。我的数据库中的数据必须是查询

===========================================

这是我的架构 http://i.imgur.com/Dju0G.png

enter image description here

4 个答案:

答案 0 :(得分:1)

有问题的对象(CI_DB_mysql_result)缺少__toString implementation,这就是您收到错误的原因。

但是,这可能意味着该对象无法有效地转换为字符串。

相反,您应该首先将对象数据转换为字符串,以便进行print操作。我不能从你发布的代码中说出你正在寻找的具体用途,所以我可以添加更多内容。

请参阅Generating Query ResultsActive Record Class

编辑:对于快速而脏的字符串打印,您可以使用print_r,但我不知道这对您的案例是否真的有用:

$result = $this->db->get();
print_r($result);

这与使用var_dump的建议相当。您应该说实际要打印哪种信息,为此您应该知道数据库返回的数据类型。有关如何使用返回值的一些示例,请参阅get()Active Record Class的文档。

答案 1 :(得分:1)

使用函数 result_array()将查询结果作为纯数组返回,或者在没有结果时返回空数组:

...
$result = $this->db->get()->result_array();
print($result);
...

答案 2 :(得分:0)

get()方法不返回结果。尝试将您的查询和$ result-lines更改为类似

的内容
$query = $this->db->get_where('procedure_id', $record_id);
$result = $this->db->result();

答案 3 :(得分:0)

num_rows是一个方法,而不是属性。