Php 从数据库获取单个值-Codeigniter
我正在尝试获取注册用户的名字和姓氏。 这是我的getfirstname,模型中的getlastname函数Php 从数据库获取单个值-Codeigniter,php,mysql,codeigniter,Php,Mysql,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
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;
}
}
在我的控球器中:
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”,而不是实际的firstname和lastname
echo $fname;
echo $lname;
从我所看到的情况来看,除非我遗漏了'fname'和'lname'变量,否则实际上您并没有声明它们,但如果它一直返回'Array',那是因为您需要使用
$variable = json_encode($arrayName);
这将把数组变成一个字符串,希望这能有所帮助。从我所看到的情况来看,你实际上没有声明'fname'和'lname'变量,除非我遗漏了它,但如果它一直返回'array',那是因为你需要用
$variable = json_encode($arrayName);
这将把数组变成一个字符串,希望这会有所帮助。您对模型的调用完全错误,而您没有 遵循标准程序。像这样试试。 分离逻辑 控制器
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;
}
你对模特的要求是完全错误的,而你不是 遵循标准程序。像这样试试。 分离逻辑 控制器
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;
}
用户模型
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))
));
}
视图:
用户模型
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))
));
}
视图:
但我正在将$data数组传递到视图中。fname和lname将在视图中转换为变量,对吗?啊,我明白了,但不能直接将数组转换为独立的字符串变量。。。您必须对数组进行字符串化或序列化,以便将其拆分,否则,这是因为您没有指定要使用的数组的哪一部分。。。所以如果我有一个像。。。我想fname$fname[0]是空的。它没有打印任何东西。var_dump显示它被设置为NULL。找不到getf和getl函数不返回值的原因我认为可能是因为您创建了查询并创建了行。。。您已经创建了结果,在MySQL中,您必须创建查询,将查询传递给结果并将结果传递给行,但我将$data数组传递到视图中。fname和lname将在视图中转换为变量,对吗?啊,我明白了,但不能直接将数组转换为独立的字符串变量。。。您必须对数组进行字符串化或序列化,以便将其拆分,否则,这是因为您没有指定要使用的数组的哪一部分。。。所以如果我有一个像。。。我想fname$fname[0]是空的。它没有打印任何东西。var_dump显示它被设置为NULL。找不到getf和getl函数不返回值的原因我认为可能是因为您创建了查询并创建了行。。。您已经创建了结果,在MySQL中,您必须创建查询,将查询传递给结果,并将结果传递给行