语法错误或访问冲突CakePHP updateAll

语法错误或访问冲突CakePHP updateAll,cakephp,save,syntax-error,Cakephp,Save,Syntax Error,有时,当我使用CakePHP从中触发“updateAll”操作时,会出现语法错误或访问冲突。当我执行以下操作时: $variable = date('Y-m-d H:i:s') <- for instance $this->Model->updateAll( array('my_table_column' => $variable), array('id' => $id)); 我想知道为什么会发生这种情况,以及这是否是保存数据等的一种保存方式。如文件所述

有时,当我使用CakePHP从中触发“updateAll”操作时,会出现语法错误或访问冲突。当我执行以下操作时:

$variable = date('Y-m-d H:i:s')  <- for instance    
$this->Model->updateAll(
array('my_table_column' => $variable),
array('id' => $id));
我想知道为什么会发生这种情况,以及这是否是保存数据等的一种保存方式。

如文件所述(),您应该使用
Sanitize::escape()
:

如文件所述(),您应该使用
Sanitize::escape()

正如所说

$fields数组接受SQL表达式。应使用DboSource::value()手动引用文字值。例如,如果您的一个模型方法正在调用updateAll(),您将执行以下操作:

$variable = date('Y-m-d H:i:s')  <- for instance    
$this->Model->updateAll(
array('my_table_column' => $variable),
array('id' => $id));
或者,如果您在控制器中执行updateAll(假设您使用的是贝克模型)

正如所说

$fields数组接受SQL表达式。应使用DboSource::value()手动引用文字值。例如,如果您的一个模型方法正在调用updateAll(),您将执行以下操作:

$variable = date('Y-m-d H:i:s')  <- for instance    
$this->Model->updateAll(
array('my_table_column' => $variable),
array('id' => $id));
或者,如果您在控制器中执行updateAll(假设您使用的是贝克模型)


全部在这里:-updateAll是一个原子操作,接受尽可能强大的SQL表达式。全部在这里:-updateAll是一个原子操作,接受尽可能强大的SQL表达式。但我不明白为什么要在[“'”]qoutes之间解析变量。在那里,文件没有告诉任何关于那件事。感谢您提供的清理信息,非常有用。请不要将它们视为SQL表达式。这个信息也在那个页面上,但我不明白为什么要解析[“'”]qoutes之间的变量。在那里,文件没有告诉任何关于那件事。感谢您提供的清理信息,非常有用。请不要将它们视为SQL表达式。该信息也在该页面上。
$ds = $this->getDataSource();
$value = $ds->value($value, 'string');
$this->updateAll(
    array('Baker.status' => $value),
    array('Baker.status' => 'old')
);
$ds = $this->Baker->getDataSource();
$value = $ds->value($value, 'string');
$this->Baker->updateAll(
    array('Baker.status' => $value),
    array('Baker.status' => 'old')
);