【问题标题】:codeigniter array variablecodeigniter 数组变量
【发布时间】:2010-01-21 19:48:00
【问题描述】:

到目前为止,这是我的代码,除了我尝试让 'company' = $company 时,我的代码都可以正常工作,我想知道什么

if($query) // if the user's credentials validated///
    {
        $this->db->where('username');
        $this->db->select('company');
        $company = $this->db->get('user');

        $data = array(
            'username' => $this->input->post('username'),
            'company' => $company
            'is_logged_in' => true
        );
        $this->session->set_userdata($data);
        redirect('site/members_area');
    }
    else
    {
        $this->index();
    }

【问题讨论】:

    标签: php session codeigniter arrays variables


    【解决方案1】:

    其他两个答案都修复了代码中的两个错误之一,这是一个补充。

    if($query) {
      $username = $this->input->post('username');
    
      $this->db->select('company')->where('username', $username);
      $result = $this->db->get('user')->row_array();
    
      $data = array(
          'username' => $username,
          'company' => $row['company'],
          'is_logged_in' => true
      );
      $this->session->set_userdata($data);
      redirect('site/members_area');
    } else {
      $this->index();
    }
    

    看看我在那里做了什么?您不需要使用 result_array() 然后抓取 $query_result[0] ,因为 row_array() 会为您执行此操作。并且通过一个小的方法链接,你可以清理你的语法。

    【讨论】:

      【解决方案2】:

      “$company”后缺少逗号。

      编辑:根据 cmets 中的讨论,我已重写您的代码以(希望)获得公司的价值:

      if($query) {
        $username = $this->input->post('username');
      
        $this->db->where('username', $username);
        $this->db->select('company');
        $result = $this->db->get('user');
      
        // Here we assume that the query succeeded.
        // You should probably double-check.
        $company = $result->result_array[0]['company'];
      
        $data = array(
            'username' => $username,
            'company' => $company,
            'is_logged_in' => true
        );
        $this->session->set_userdata($data);
        redirect('site/members_area');
      } else {
        $this->index();
      }
      

      【讨论】:

      • 如果我按照您所说的进行操作,我会收到以下错误 遇到 PHP 错误严重性:4096 消息:CI_DB_mysql_result 类的对象无法转换为字符串文件名:控制器/登录。 php行号:24
      • 嗯,那是另一回事了。 24 是哪一行(即 sn-p 小于 24 行)?
      • 第 24 行是 'company' => $company 整个事情是 79 行。如果我完全删除 'company' => $company,则没有错误并且可以正常运行(减去公司会话数据)
      • 在我看来问题更可能发生在“$this->session->set_userdata($data);”上数据,因为这可能会尝试(并且失败)强制强制转换。除了存储数据之外,构造数组不应尝试做任何事情。
      • 当我使用 'company' => 'company' 行运行它时,它运行良好。只有当我把它变成一个变量时,它才会搞砸
      【解决方案3】:

      result_array 是一个函数,而不是一个变量。试试

      if($query) {
        $username = $this->input->post('username');
      
        $this->db->where('username', $username);
        $this->db->select('company');
        $query_result = $this->db->get('user');
      
        // Here we assume that the query succeeded.
        // You should probably double-check.
        $result= $query_result->result_array();
      
        $data = array(
            'username' => $username,
            'company' => $result[0]['company'],
            'is_logged_in' => true
        );
        $this->session->set_userdata($data);
        redirect('site/members_area');
      } else {
        $this->index();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-14
        • 2013-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多