由于我的代码一半有效,所以很难解释。
基本上这就是我所拥有的:
public function add() {
$this->set('branchingQuestions', $this->BranchingQuestion->find('all'));
if ($this->request->is('post')) {
$_POST['data']['Job']['branchingQuestions'] = mysql_escape_string(serialize($_POST['data']['Job']['branchingQuestions']));
var_dump($_POST['data']['Job']);
//die;
$this->Job->create();
if ($this->Job->save($this->request->data)) {
$this->Session->setFlash(__('The job has been saved.'));
return $this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The job could not be saved. Please, try again.'));
}
}
}
这是一个Cake PHP控制器。大部分代码都是通过Bake生成的。
无论如何,在我的POST数组中是另一个名为branchingQuestions的数组,因为它是一个数组,我在插入时会遇到错误。但是从var_dump我得到的数组已成功序列化,现在是一个字符串,与POST的其他内容相同。所以它应该有用。
然而,通过测试一些事情,似乎CakePHP甚至没有意识到我已经使用序列化线更新了数组。它运行就好像从未发生过,即使我的var_Dump建议不这样做。
['数据'] ['工作']包含我的所有字符串和内容,例如['数据'] ['工作'] ['标题']并且它们插入正常,但为了测试我的理论,我也改变了[' title'],如下所示:
$_POST['data']['Job']['title'] = 120;
由于title是一个字符串,因此SQL应该给出错误。但它甚至没有改变头衔仍然是"测试"在我的桌子里。
branchingQuestions的发布方式如下:
<select name='data[Job][branchingQuestions][question" + branchCount + "]'
我有一个动态表单,您可以在需要时添加更多选择框,这就是为什么我在问题部分中有一个变量。所有这一切都正常,var_dump给了我预期的结果。
答案 0 :(得分:1)
您实际上必须编辑$ this-&gt; request-&gt;数据数组而不是$ _POST数组。