【问题标题】:Undefined Index : Codeigniter [duplicate]未定义索引:Codeigniter [重复]
【发布时间】:2016-02-15 17:34:45
【问题描述】:

您好,这段代码运行良好......由于某种原因,从一天到另一天开始失败

模型函数

        function tipo_user($param)
    {

        $query = $this->db->query('select * from tipo_user where user_id = "'.$param.'"');

    if ($query->num_rows() > 0)
    {   
        foreach ($query->result() as $row)
        {
            $sess['group_id'] = $row->group_id;
            $sess['fullname'] = $row->fullname; 
            $sess['rut'] = $row->rut;       

        }
    }
    return $sess;

    }

控制器

$this->load->model('vista_tipo_user');

                $sesion  = $this->vista_tipo_user->tipo_user($this->bitauth->user_id);


                         $session_data = array(
                            'user_type' => $sesion['tipo_user'],
                            'fullname' => $sesion['fullname'],
                            'rut' => $sesion['rut']
                                );

如果我打印 var $session 结果是

数组([group_id] => 1 [fullname] => 管理员 [rut] =>)

错误信息是

遇到 PHP 错误 严重性:通知 消息:未定义索引:tipo_user 文件名:控制器/session.php 行号:104

【问题讨论】:

  • 你处理数据的方式不对
  • 你评论的方式没有帮助
  • 这实际上是一个错字问题。您的控制器正在尝试访问密钥 tipo_user,但您的模型正在将目标值分配给密钥 group_id

标签: php codeigniter


【解决方案1】:

原因是您为数组$sesion 使用了错误的键tipo_user。正如您提到的,您的输出是:

Array ( [group_id] => 1 [fullname] => Administrator [rut] => )

所以没有名称为tipo_user 的密钥。我想你需要group_id

【讨论】:

    【解决方案2】:

    在您的模型方法中,在您的 foreach 迭代中,您不会推送数组,而是每次迭代都会覆盖数组数据,这就是为什么您可能只得到最后一行的原因。你需要这样做:

    foreach ($query->result() as $row)
    {
        $sess[] = $row;
    }
    return $sess;
    

    但是你真正应该做的是:

    return $query->result();
    

    阅读此处了解更多信息:Generating Query Results in Codeigniter 3

    【讨论】:

      【解决方案3】:

      试试这个

      在控制器中

      $this->load->model('vista_tipo_user');
      
      $user_id = $this->bitauth->user_id;
      if (empty($user_id)) {
          echo "User ID is empty";
      }
      else{
          $sesion  = $this->vista_tipo_user->tipo_user();
      
          if ($sesion == false) {
              echo "No data";
          }
          else{
              $session_data = array(
                  'user_type' => $sesion[0]['tipo_user'],
                  'fullname' => $sesion[0]['fullname'],
                  'rut' => $sesion[0]['rut']
              );
      
              print_r($session_data);
          }
      }
      

      在模型中

      function tipo_user($param)
      {
      
          $query = $this->db->query("SELECT * FROM tipo_user WHERE user_id = '$param' ");
          $result = $query->result_array();
      
          $count = count($result);
      
          if (empty($count)) {
              return false;
          }
          else{
              // print_r($result); # check this first
              return $result
          }
      }
      

      在模型中你有group_idfullnamerut

      但在 Controller 中,您访问的是 tipo_userfullnamerut

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-18
        • 2015-10-18
        • 1970-01-01
        • 2020-12-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多