从数据库中获取单个值- Codeigniter


Getting a single value from database - Codeigniter

我正在尝试获取注册用户的名字和姓氏。这是模型中的getfirstname getlastname函数

public function getf()
{  
  $email = $this->input->post('email');
  $this->db->where('email', $this->input->post('email'));
  $query = $this->db->get('users');
        if($query->num_rows == 1)
        {
          $row = $query->row();
          echo $row->fname;
        }
}

public function getl()
{
    $this->db->where('email', $this->input->post('email'));
    $query = $this->db->get('users');
    if($query->num_rows == 1)
    {
        $row = $query->row();
        echo $row->lname;
    }
}

In My controller:

public function members()
{
    if($this->session->userdata('is_logged_in'))
    {
        $data['fname'] = $this->getf(); 
        $data['lname'] = $this->getl();
        $this->load->view('members', $data);
    }
    else
    {
        redirect('main/restricted');
    }
}

我在我的视图中返回fname和lname变量,它打印'Array'而不是实际的姓和名

echo $fname;
echo $lname;

你对模型的调用是完全错误的,你不是遵循标准程序。试试这样。分离逻辑

控制器

public function members()
{
    if($this->session->userdata('is_logged_in'))
    {
        $email  =   $this->input->post('email');
        $result =   $this->mymodel->getnames($email); 
        if($result){
            $data['fname'] = $result->first_name;
            $data['lname'] = $result->last_name;
            $this->load->view('members', $data);
        }
    }
    else
    {
        redirect('main/restricted');
    }
}

为模型创建单个函数而不是两个函数对于两个可以用单个函数检索的值也返回对象而不是回显

public function getnames($email)
{  
    $this->db->where('email',$email);
    $query = $this->db->get('users');
    if($query->num_rows == 1)
    {
        return $query->row();
    }
    return false;
}

从我可以看到你实际上没有声明'fname'和'lname'变量,除非我错过了它,但如果它一直返回'Array',那么这是因为你需要用

序列化数组
$variable = json_encode($arrayName);

这将把数组转换为字符串,希望这对您有帮助。

UserModel

class UserModel extends CI_Model
{
    public function getItemByEmail($email)
    {  
        // check email
        $this->load->helper('email');
        if( ! $email OR ! valid_email($email))
            return array();
        $this->db->where('email', $email);
        $this->db->limit(1);
        $item = $this->db->get('users')->row();
        return $item;
    }
}

控制器:

public function members()
{
    if( ! $this->session->userdata('is_logged_in'))
        redirect('main/restricted');
    $this->load->model('UserModel');
    $this->load->view('members', array(
        'userRow' => $this->UserModel->getItemByEmail($this->input->post('email', TRUE))
    ));
}

视图:

<?= (isset($userRow->fname) ? $userRow->fname : ''); ?>