【问题标题】:print() function! Error 4096 object could not be converted to string打印()函数!错误 4096 对象无法转换为字符串
【发布时间】:2011-10-17 10:04:20
【问题描述】:

我有一个名为 $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 ;


        }

我使用打印功能的原因只是为了测试我的查询是否正常工作并且它有值。我如何做到这一点。

谢谢

编辑!!!

这是我在 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
}

我已添加以下代码:

如果 ($result->num_rows >0) { 回声“数据”; } 别的 { 回显“无数据”; }

它说有 "NO DATA" 所以我的查询一定是废话和错误的,所以我需要重新设计查询。 THE IS DATA IN MY DATABASE 所以必须查询

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

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

【问题讨论】:

  • 谢谢,但是它返回了所有这些:object(CI_DB_mysql_result)#22 (8) { ["conn_id"]=> resource(30) of type (mysql link persistent) ["result_id"]= > 类型的资源(40)(mysql 结果)[“result_array”]=> array(0) { } ["result_object"]=> array(0) { } ["custom_result_object"]=> array(0) { } ["current_row"]=> int(0) ["num_rows"]=> int(0) ["row_data"]=> NULL } 这是我的查询结果吗?
  • @sqlmole:请将 var_dump 输出添加到您的问题中,而不是作为评论。谢谢。

标签: php codeigniter printf


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      有问题的对象 (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 的文档。

      【讨论】:

      • 谢谢我已经在问题中转储了 var_dump 的结果
      • @sqlmole:正如您的var_dump 显示的那样(请下次粘贴格式化)结果为空。因此,即使您将其转换为字符串,它也是一个空字符串。您可能不了解您正在使用的功能和/或正在做什么。检查数据库中的数据以找出您想要返回的值(如果有的话)。我建议您阅读 CI 文档,其中包含示例并且解释得很好。这应该会为您提供继续操作所需的信息。
      • 我一直在关注 CI 示例!!!!!!他们没有得到很好的解释!!!!!!请帮帮我
      • @sqlmole:先冷静下来,在外面呼吸新鲜空气 30 分钟,喝杯茶。你只是错过了我所看到的一个小链接。而且我在文档中没有看到打印示例。这只是来自get()$result 的foreach。只要有一点耐心,您就可以更好地理解,如果我指出了文档,请不要感到被冒犯。这是最好的意图。就帮我帮你吧。
      • 我添加了新代码来建模它说没有返回行,所以我的查询一定是错误的。谢谢
      【解决方案4】:

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

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

      【讨论】:

      • 谢谢,但它现在说 致命错误:在第 70 行的 C:\xampp\htdocs\midas\application\models\control_panel_model.php 中调用未定义的方法 CI_DB_mysql_driver::result()
      • @sqlmole:您使用的是Active Record Class,它没有result() 方法。改用适合您的方法,例如get(),但是,在打印之前将返回值处理为字符串。请参阅下面的答案。
      • 好的,我改回 get() 并在问题中发布了查询结果
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-03
      • 2014-11-21
      • 2015-02-05
      • 2012-07-12
      相关资源
      最近更新 更多