|
发表于 2013-8-9 10:48:16
|
显示全部楼层
jxh163 发表于 2008-6-12 17:50
$arr['times']='now()';
别加引号应该就可以,加上引号就变成字符串了
不加引号就会被php解析;用active record类来进行时间插入是不行的,这个应该算是个bug吧。
在active record类对传入的$data参数会进行下面的处理
PHP复制代码
/**
* The "set" function. Allows key/value pairs to be set for inserting or updating
*
* @param mixed
* @param string
* @param boolean
* @return object
*/
public function set ($key, $value = '', $escape = TRUE)
{
$key = $this->_object_to_array ($key);
if ( ! is_array($key))
{
$key = array($key => $value);
}
foreach ($key as $k => $v)
{
if ($escape === FALSE)
{
$this->ar_set[$this->_protect_identifiers ($k)] = $v;
}
else
{
$this->ar_set[$this->_protect_identifiers ($k, FALSE, TRUE)] = $this->escape($v);
}
}
return $this;
}
复制代码
然后执行mysql driver中的_insert方法
PHP复制代码
function _insert ($table, $keys, $values)
{
return "INSERT INTO ".$table." (".implode(', ', $keys).") VALUES (".implode(', ', $values).")";
}
复制代码
可以看到都没有对now()进行转义处理。
所以要插入时间时,可以自己手写sql进行插入
$sql = "insert into test(test_date) values (now())";
$this->db->query($sql);
|
|