为什么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