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

我得到这个错误,因为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()')))

以上是 为什么CakePHP使用引号形成'CURRENT_TIMESTAMP'的INSERT语句? 的全部内容, 来源链接: utcz.com/qa/259609.html

回到顶部