【问题标题】:Passing result array to controller in codeigniter将结果数组传递给codeigniter中的控制器
【发布时间】:2016-05-29 21:40:28
【问题描述】:

我正在开发一个简单的个人资料页面,但是我在将结果数组传递给控制器​​时遇到了一些困难。我不确定这是否可以做到。

型号:

 class Login_model extends CI_Model{

 function get_profile()
{

    $this->db->where('email', $this->input->post('email'));
    $query = $this->db->get('user');

    if($query->num_rows == 1)
    {
        return $query->result_array();
    }

}
}

控制器:

         class Login extends CI_Controller {
         function show_profile{
        $this->load->model('login_model');
        $q['user'] = $this->login_model->get_profile();
       echo $q['user'];
       }
      }

我尝试回显 $q['user'] 作为测试,看看它是否会起作用,但它不起作用。

【问题讨论】:

  • 如果没有空的结果集,它要么是对象(在你的情况下也是如此)一个数组。 echo 语言结构无法处理这些。使用var_dump($q['user']) 对其进行调试。

标签: arrays codeigniter model controller


【解决方案1】:

在这种情况下,如果您要返回多个结果,则结果数组将是。因为你只得到一个结果,你可以这样做 row_array() 像

    if($query->num_rows == 1)
{
    return $query->row_array();
}
    else
{
    return false; 
}

永远不要这样做

// example of what NOT to do 
$this->db->where('email', $this->input->post('email'));// NO NO NO

首先使用 codeigniter 表单验证来验证电子邮件,然后像这样发送它

// if no user comes back then deal with it right away 
if( ! $user = $this->login_model->get_profile($email) ) 
{
    $this->showNoUserFor($email) ; 
} 
else 

{  // carry on.... 

否则 - 先做 codeigniter 手册中的教程,它会为你节省很多时间。

【讨论】:

    【解决方案2】:

    你不能回显 $q['user'] 因为它是一个数组。使用

    `print_r($q['user']); exit;
    

    您可以通过

    将其传递到您的查看页面
    `$this->load->view('yourViewPage',$q);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多