我想在Codeigniter的活动记录中使用mySQL函数NOW()在数据库中插入当前时间。以下查询将不起作用:
$data = array( 'name' => $name , 'email' => $email, 'time' => NOW() ); $this->db->insert('mytable', $data);
这是因为CodeIgniter的ActiveRecord类自动转义输入。
通过调用set()并传递peratmeter FALSE,以下代码可以正常工作,以使它不会逃脱NOW()。
$data = array( 'name' => $name , 'email' => $email, ); $this->db->set('time', 'NOW()', FALSE); $this->db->insert('mytable', $data);
但是,我的问题是,除此之外还有其他方法吗?例如,如果我可以通过只添加数据数组中的所有内容来以某种方式使用?例如,类似:
$data = array( 'name' => $name , 'email' => $email, 'time' => NOW(), FALSE );
除非我犯了个大错,否则答案是:“不,没有办法。”
这种情况下的基本问题是您正在调用MySQL函数,而实际上没有设置值。CI逃脱值,这样你可以做一个干净的插入,但它并没有测试,看看这些值碰巧被调用函数一样aes_encrypt,md5或(在这种情况下)now()。虽然在大多数情况下这是很棒的,但在这些情况下,原始sql是唯一的手段。
aes_encrypt
md5
now()
一方面,date('Y-m-d');应作为NOW()MySQL 的PHP版本使用。(尽管它不适用于所有版本的SQL)。
date('Y-m-d');
NOW()