小编典典

使用CodeIgniter的活动记录将NOW()插入数据库

mysql

我想在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
            );

阅读 257

收藏
2020-05-17

共1个答案

小编典典

除非我犯了个大错,否则答案是:“不,没有办法。”

这种情况下的基本问题是您正在调用MySQL函数,而实际上没有设置值。CI逃脱值,这样你可以做一个干净的插入,但它并没有测试,看看这些值碰巧被调用函数一样aes_encryptmd5或(在这种情况下)now()。虽然在大多数情况下这是很棒的,但在这些情况下,原始sql是唯一的手段。

一方面,date('Y-m-d');应作为NOW()MySQL 的PHP版本使用。(尽管它不适用于所有版本的SQL)。

2020-05-17