select-from-where查询在codeigniter模型中不起作用

时间:2013-02-23 06:07:49

标签: php mysql codeigniter select

我试图从mysql数据库中的表中选择用户的详细信息,但它无法正常工作。这是我模型中的代码: -

public function getuserdetails()
{
        $user_email = $this->input->post('email');
        $query_userdetails = $this->db->query("SELECT * 
                                               FROM users WHERE email = '$user_email' ");

        return $query_userdetails->result_array();
}

这不起作用。但是,如果我将实际的电子邮件ID放在查询而不是$ user_email中,它可以正常工作但不正确,即使用: -

$query_userdetails = $this->db->query("SELECT * FROM users WHERE 
                                       email = 'myemail@gmail.com' ");

在这种情况下,它返回一个结果。我接受结果的控制器代码是: -

$data['details'] = $this->model_userdetails->getuserdetails();

但问题是当我在视图中访问$ details时: -

echo $details['name']."<br />";

它无法识别'姓名'。 name是数据库中存储用户名称的字段。但是,如果我尝试在foreach循环中检索它,它可以工作: -

foreach($details as $udetails)
{
     echo $udetails['name']."<br />";
}

6 个答案:

答案 0 :(得分:1)

根据codeigniter建议运行查询

$ query_userdetails = $ this-&gt; db-&gt; query(“SELECT * FROM users WHERE email =?”,array($ user_email));

http://ellislab.com/codeigniter/user-guide/database/queries.html搜索查询绑定

答案 1 :(得分:0)

我会尝试:

$query_userdetails = $this->db->query("SELECT * FROM users WHERE email = '". $user_email ."'");

答案 2 :(得分:0)

我已经解决了只有foreach循环可以工作的部分。

如果我们使用row_array而不是返回result_array(),那么对diplay的foreach约束就会消失。

现在我想从电子邮件是$ user_email

的数据库中选择名称

答案 3 :(得分:0)

你必须这样写

public function getuserdetails()
{
    $user_email = $this->input->post('email');
    $this->db->where('email', $user_email)
             ->get('users')
             ->result_array();
}

在此之后,您必须像这样写

foreach($details as $udetails)
{
     echo $udetails['name']."<br />";
}

答案 4 :(得分:0)

你可以尝试这样:

[CONTROLLER]

$data = array();
$data['udetails'] = $this->UserModel->getuserdetails();
$this->load->view('welcome_message',$data);

[MODEL]

public function getuserdetails() {
    $user_email = 'webmaster';
    $userdetails = $this->db->query("SELECT * FROM users WHERE umail = '$user_email' ");
    return $userdetails->result();
}   

[VIEW]

<?php 
 foreach($udetails as $row) 
 {
    echo($row->uname.'<br/>');
    echo($row->uname);
 }
?>

答案 5 :(得分:0)

试试这个,它会帮助你。 的模型

 public function getuserdetails()
    {
        $user_email = $this->input->post('email');
        $this->db->select("*");
        $this->db->from('users');
        $this->db->where('email',$user_email);
        $query = $this->db->get();
        $result= $query->result();
    }

<强>控制器

$data['details'] = $this->model_userdetails->getuserdetails();

查看

foreach($details as $detail)
{   
   echo $detail->name;
   echo $detail->email;
}