• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

为什么CakePHP使用引号形成’CURRENT_TIMESTAMP’的INSERT语句?

mysql 来源:Sergiy Migdalskiy 5次浏览

我得到这个错误,因为cakephp 1.3.11用引号中的’CURRENT_TIMESTAMP’创建了一个INSERT语句。类似的事情在1.3.9中工作。我可能会做错什么?为什么CakePHP使用引号形成’CURRENT_TIMESTAMP’的INSERT语句?

SQL Error: 1292: Incorrect datetime value: 'CURRENT_TIMESTAMP' for column 'time_posted' at row 1 [CORE\cake\libs\model\datasources\dbo_source.php, line 684] 

这是上下文查询:

$sql = "INSERT INTO `my_table` (`time_posted`, `version`, `provider`, `date`) VALUES ('CURRENT_TIMESTAMP', 0, 'provider', '2011-08-03 16:11:00')" 

我试图用这个代码的CakePHP在数据库中创建一个新的记录:

class MyTable extends AppModel 
{ 
... 
function blah() { 
... 
$this->create() 
$ret=$this->save(array('MyTable'=>array('provider'=>$provider,'date'=>$datetime))); 
... 

这里的堆栈:

DboSource::showQuery() - CORE\cake\libs\model\datasources\dbo_source.php, line 684 
DboSource::execute() - CORE\cake\libs\model\datasources\dbo_source.php, line 266 
DboSource::create() - CORE\cake\libs\model\datasources\dbo_source.php, line 752 
Model::save() - CORE\cake\libs\model\model.php, line 1342 
MyTable::add() - APP\models\my_table.php, line 1288 


===========解决方案如下:

正如Dunhamzzz所说,必须有一个导致CURRENT_TIMESTAMP被插入的地方。

一旦找到它,您可以使用date('Y-m-d H:i:s')来保存使用当前时间。 或者,如果你想用SQL来完成,你可以使用DboSource::expression('NOW()')

即。

array('MyTable'=>array('time_posted' => DboSource::expression('NOW()')))


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)