Rom*_*man 77 php mysql codeigniter
我想在Codeigniter的活动记录中使用mySQL函数NOW()在数据库中插入当前时间.以下查询将不起作用:
$data = array(
'name' => $name ,
'email' => $email,
'time' => NOW()
);
$this->db->insert('mytable', $data);
Run Code Online (Sandbox Code Playgroud)
这是因为CodeIgniter的ActiveRecord类会自动转义输入.
以下工作正常,通过调用set()并传递peratmeter FALSE,以便它不会逃避NOW().
$data = array(
'name' => $name ,
'email' => $email,
);
$this->db->set('time', 'NOW()', FALSE);
$this->db->insert('mytable', $data);
Run Code Online (Sandbox Code Playgroud)
但是,我的问题是除此之外还有其他方法吗?例如,如果我可以通过添加数据数组中的所有内容以某种方式使用?例如,类似于:
$data = array(
'name' => $name ,
'email' => $email,
'time' => NOW(), FALSE
);
Run Code Online (Sandbox Code Playgroud)
Bil*_*l H 73
我通常使用触发器来处理时间戳,但我认为这可能有用.
$data = array(
'name' => $name,
'email' => $email
);
$this->db->set('time', 'NOW()', FALSE);
$this->db->insert('mytable', $data);
Run Code Online (Sandbox Code Playgroud)
cwa*_*ole 32
除非我大错特错,答案是"不,没有办法."
在这种情况下的基本问题是你正在调用MySQL函数,而你实际上并没有设置一个值.CI逃脱值,这样你可以做一个干净的插入,但它并没有测试,看看这些值碰巧被调用函数一样aes_encrypt,md5或(在这种情况下)now().虽然在大多数情况下这很好,但对于那些情况,原始sql是唯一的办法.
另一方面,date('Y-m-d');应该作为NOW()MySQL 的PHP版本.(但它不适用于所有版本的SQL).
小智 14
aspirinemaga,只需替换:
$this->db->set('time', 'NOW()', FALSE);
$this->db->insert('mytable', $data);
Run Code Online (Sandbox Code Playgroud)
为了它:
$this->db->set('time', 'NOW() + INTERVAL 1 DAY', FALSE);
$this->db->insert('mytable', $data);
Run Code Online (Sandbox Code Playgroud)
sau*_*ble 12
这是处理时间戳插入的简便方法
$data = array('created_on' => date('Y-m-d H:i:s'));
Run Code Online (Sandbox Code Playgroud)
$data = array(
'name' => $name ,
'email' => $email,
'time' =>date('Y-m-d H:i:s')
);
$this->db->insert('mytable', $data);
Run Code Online (Sandbox Code Playgroud)
如果要引用用户GMT时间偏移量,可以加载日期助手并使用codeigniter interal now()
它看起来有点像这样
$data = array(
'created_on' => date('Y-m-d H:i:s',now())
);
Run Code Online (Sandbox Code Playgroud)
如果你不使用GTM主设置并让你的用户设置他们自己的偏移量,那么使用php的time()函数没有任何优势.
| 归档时间: |
|
| 查看次数: |
116510 次 |
| 最近记录: |