【问题标题】:select-from-where query not working in codeigniter modelselect-from-where 查询在 codeigniter 模型中不起作用
【发布时间】:2013-02-08 20:48:55
【问题描述】:

我正在尝试从 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 />";
}

【问题讨论】:

  • 可能是您使用GET 方法的表单。检查一下。
  • 没有它的帖子。我的另一个模型工作正常。我使用 $this->db->where('email',$this->input->post('email'));这里没问题

标签: php mysql codeigniter select


【解决方案1】:

我会尝试:

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

【讨论】:

  • 你认为问题出在以下语句: - $user_email = $this->input->post('email');
  • @StacyJ 从控制器传递 $email 并进行测试
【解决方案2】:

根据 codeigniter 的建议运行查询

$query_userdetails = $this->db->query("SELECT * FROM users WHERE email = ?", array($user_email));

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

【讨论】:

  • 这只是在用户中给出名字
【解决方案3】:

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

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

现在我想从 email 为 $user_email 的数据库中选择名称

【讨论】:

    【解决方案4】:

    你必须这样写

    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 />";
    }
    

    【讨论】:

      【解决方案5】:

      你可以这样试试:

      [控制器]

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

      [型号]

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

      [查看]

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

      【讨论】:

      • 试试 $this->db->get_where()
      【解决方案6】:

      请试试这个,它会帮助你。 型号

       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;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-06-16
        • 1970-01-01
        • 2017-09-27
        • 2018-06-17
        • 1970-01-01
        • 2019-06-26
        • 1970-01-01
        相关资源
        最近更新 更多