SELECT MAX查询返回只有1个变量+笨(SELECT MAX query returns on

2019-09-28 14:04发布

我用笨并有关于SELECT MAX的问题......我couldnot找到谷歌搜索的任何解决方案...

它看起来像它仅返回ID:/这是给错误的表中的其他列:/

欣赏帮助,谢谢!


模型:

   function get_default() 
   {
        $this->db->select_max('id');
        $query = $this->db->getwhere('gallery', array('cat' => "1"));   

        if($query->num_rows() > 0) {
             return $query->row_array(); //return the row as an associative array
        }
    }

控制器:

$default_img = $this->blabla_model->get_default();
$data['default_id'] = $default_img['id']; // it returns this
$data['default_name'] = $default_img['gname']; // it gives error for gname although it is at table

Answer 1:

为了达到你的目标,你的愿望SQL可以看起来像:

 SELECT * FROM gallery WHERE cat = '1' ORDER BY id LIMIT 1 

并利用CodeIgniter的数据库类:

 $this->db->select('*'); $this->db->where('cat', '1'); $this->db->order_by('id', 'DESC'); $this->db->limit(1); $query = $this->db->get('gallery'); 



Answer 2:

这是正确的: select_max只返回值,并没有其他的列。 从规格:

$this->db->select_max('age');
$query = $this->db->get('members');
// Produces: SELECT MAX(age) as age FROM members

您可能需要先读值,并运行另一个查询。
对于一个id,你也可以使用$id = $this->db->insert_id();

参见: http://www.hostfree.com/user_guide/database/active_record.html#select



Answer 3:

如果没有别的选择的CodeIgniter将选择*。 通过设置select_max()你是填充选择属性,所以说你只需要那些价值。

为了解决这个问题,只是结合select_max()和select():

$this->db->select('somefield, another_field');
$this->db->select_max('age');

甚至:

$this->db->select('sometable.*', FALSE);
$this->db->select_max('age');

应该做的伎俩。



Answer 4:

应当注意的是,你当然也可以利用自己的“自定义”中的SQL语句笨,你不局限于到目前为止你已经列出的活动记录SQL函数。 该笨提供了另一种有效记录的功能是$这 - > DB->查询(); 它允许你提交自己的SQL查询(包括变量),如下所示:

function foo_bar()

{
   $cat = 1;
   $limit = 1;
   $sql = "
        SELECT *
        FROM gallery
        WHERE cat = $cat
        ORDER BY id
        LIMIT $limit
   ";
   $data['query'] = $this->db->query($sql);
   return $data['query'];
}

最近我一直在使用这个颇有几分,因为我一直在做一些查询,很难(如果不是恼人的或不可能)的决绝与CI的明确活动记录功能。 我知道你可能已经知道这一点,只是认为这将有助于包括为子孙后代。

2个有用的链接如下:

http://codeigniter.com/user_guide/database/results.html

http://codeigniter.com/user_guide/database/examples.html



文章来源: SELECT MAX query returns only 1 variable + codeigniter