2015-07-13 29 views
0

使用日期格式时,把假的选择查询的,我想知道下面的代码什么用的笨

$this->db->select("DATE_FORMAT(`current_date`, '%M-%d-%Y') as date_human", FALSE); 

,当我使用上面的代码背后的原因,它返回一个结果July-09-2015 ,现在我想知道FALSE这里的用法是什么。因为我没有添加FALSE时得到相同的结果。

我已经参考了[LINK](Date format with codeigniter点火器)。在这方面,专家说,它会阻止CI尝试自动保护这些名称。

编辑: 当我使用$this->db->last_query,我得到的查询是:

SELECT *, DATE_FORMAT(current_date, '%M-%d-%Y') as date_human FROM `user_data` WHERE id = '57' 

同时使用FALSE和不FALSE时。

我想知道区别,也使用FALSE。 指导我继续。

+1

尝试使用虚假回波你的活动记录查询,并没有错误,你自己会得到你的差异 –

+1

你通过把意思'$这个 - > DB-> last_query()' ? –

+0

不同之处在于你选择当前日期为date_human,所以不需要在代码中添加false。如果你没有表示列名意味着你会得到一个错误,bcaz配置项试图自动保护你的列名,为了避免这个问题,我们只是添加False。 @PHP学习者 – Gayathri

回答

0

当您使用$this->db->select() CodeIgniter自动保护您的列名称。
如果你把它设置为FALSE,笨就会不尽力保护你的领域或表名backticks

如果您需要复合选择语句,这非常有用。

$this->db->select('(SELECT SUM(payments.amount) FROM payments WHERE payments.invoice_id=4') AS amount_paid', FALSE); 
$query = $this->db->get('mytable'); 

Read CodeIgniter active_record.html#select

+0

自动保护是什么意思? –

+1

你会在这里得到答案http://stackoverflow.com/questions/7421873/codeigniter-active-record-get-query-and-query-without-the-limit-clause – Nitin

+0

@Nitin我想知道什么是马纳特'保护你的领域'? :-(它是什么意思? –

0

$this->db->select()接受一个可选的第二个参数。如果将其设置为FALSE,CodeIgniter将不会尝试保护您的字段或表名。如果您需要复合选择语句,那么在字段的自动转义可能会破坏它们的情况下,这非常有用。

例如

$this->db->select('(SELECT SUM(payments.amount) FROM payments WHERE payments.invoice_id=4) AS amount_paid', FALSE); 
    $query = $this->db->get('mytable'); 

参见: http://www.codeigniter.com/user_guide/database/query_builder.html