序列化一个POST数组,以便Cake PHP可以插入到MySQL数据库中

时间:2013-11-07 16:04:04

标签: php mysql arrays cakephp post

由于我的代码一半有效,所以很难解释。

基本上这就是我所拥有的:

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给了我预期的结果。

1 个答案:

答案 0 :(得分:1)

您实际上必须编辑$ this-&gt; request-&gt;数据数组而不是$ _POST数组。