$this->db->select('1', FALSE)是什么用法,为了安全?
function is_email_available($email) {$this->db->select('1', FALSE);
$this->db->where('LOWER(email)=', strtolower($email));
$this->db->or_where('LOWER(new_email)=', strtolower($email));
$query = $this->db->get($this->table_name);
return $query->num_rows() == 0;
}
为了提高效率吧,因为如果没有select子句,CI会为你加载所有字段,但这里的情况是只需要获取行数就可以了,不需要选择任何字段,所以加了个select 1,当然也可以使用 $this->db->count_all_results() 直接获取行数。 本帖最后由 viqecel 于 2013-7-10 09:32 编辑
SELECT COUNT(*) FROM `table` WHERE `column` = "value"
也可以这样对吧.
那select 1 这种写法,依据是什么?聚集函数吗.1表示重命名的一个字段吗.他的作用我理解了,不是返回什么记录,只是返回记录数. 减少字段 本帖最后由 gogogo1027 于 2013-7-10 16:44 编辑
这个语法可接受一个可选的第二个参数。如果你把它设为FALSE, CodeIgniter 将不会使用反引号保护你的字段或者表名。这在进行复合查询时很有用。
正常情况下
$this->db->select('title, content, date');
$query = $this->db->get('mytable');
// Produces: SELECT title, content, date FROM mytable
假如你使用复合查询,则将它第二个参数设置为FALSE,避免它把你的select()包含的SQL当成是一个字段来格式化。
$this->db->select("('SELECT SUM(payments.amount) FROM payments WHERE payments.invoice_id=4') AS amount_paid", FALSE);
$query = $this->db->get('mytable');
符合查询的时候才用到,默认则不需要。
页:
[1]