我有一个名为 $ 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
答案 0 :(得分:1)
有问题的对象(CI_DB_mysql_result
)缺少__toString
implementation,这就是您收到错误的原因。
但是,这可能意味着该对象无法有效地转换为字符串。
相反,您应该首先将对象数据转换为字符串,以便进行print
操作。我不能从你发布的代码中说出你正在寻找的具体用途,所以我可以添加更多内容。
请参阅Generating Query Results和Active 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是一个方法,而不是属性。