【问题标题】:codeigniter single result without foreach loop没有foreach循环的codeigniter单个结果
【发布时间】:2013-01-25 04:05:52
【问题描述】:

我正在使用 codeigniter 从数据库中获取单个结果,如下所示:

$user = $this->db->query("SELECT * FROM users LIMIT 1");

然后我得到返回的对象并循环遍历它,这样:

foreach ($user->result() as $row) { ... }

您可以想象,使用循环没有意义,因为只有一个结果。有没有办法在不循环的情况下获取用户参数?这一行中的一些东西:

echo $user['name'];

提前致谢。

【问题讨论】:

    标签: php mysql codeigniter foreach


    【解决方案1】:

    应该是:

    $user = $this->db->query("SELECT * FROM users LIMIT 1")->row_array();
    

    更多详情:http://ellislab.com/codeigniter/user-guide/database/results.html

    【讨论】:

      【解决方案2】:

      假设例如你的模型函数是这样的......

       public function get_users()
       {
      
        $query = "Select * from users limit 1";
      
        $res=$this->db->query($query);
      
          if($res->num_rows()>0){
              return $res->result("array");
          }
          return array();
       }
      

      假设你在你的控制器函数中这样调用这个模型

          $users =  $this->model_file->get_users();
      

      那么你可以像这样回显echo $users[0]['user_name'];

      【讨论】:

      • 这种语法我没有遇到任何问题。我将它用于整个应用程序的所有查询。
      • 我从没看到有人提到过;我只看到这个:You can also pass a string to result() which represents a class to instantiate for each result object (note: this class must be loaded)
      • 别担心,我没有 PHP 和 CI 方面的基本知识。无论如何都要这样,但我可以说........
      【解决方案3】:
      $user = $this->db->query("SELECT * FROM users LIMIT 1")->row();
      

      将其作为对象 (echo $user->name;)

      $user = $this->db->query("SELECT * FROM users LIMIT 1")->row_array();
      

      作为一个数组(echo $user['name'];);

      $user = $this->db->limit(1)->get('users')->row(); //or ->row_array();
      

      使用增强现实;

      $row = $user->first_row();
      

      从结果集($this->db->result())中取出第一行,作为对象(默认);

      $row = $user->first_row('array');
      

      从结果集中取出第一行,作为一个数组;

      $row = $user->row_array(1);
      

      返回特定行(首先,在这种情况下。只需传递行的<N>)。也适用于$user->row(1);

      【讨论】:

        【解决方案4】:

        做这样的事情

            //in the model
            $query = $this->db->query("your query");
        
        $row = $query->row();
        
            if (isset($row))
        return $row;
        }else{
        return false;
        }
        

        然后像这样回显你的结果

        echo $row->username;
        

        如果你想将它传递给视图

        //in the controller
        
        $this->load->model('somemodel');
                $hm=$this->somemodel->somemethod();
                $data['query']=$hm;
            $this->load->view('path/to/view',$data);
        

        然后以同样的方式回显

        echo $row->username;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-11-18
          • 2014-12-05
          • 1970-01-01
          • 2019-03-24
          • 2016-02-21
          • 1970-01-01
          • 2015-12-08
          • 2015-05-30
          相关资源
          最近更新 更多