簡體   English   中英

序列化POST數組,以便Cake PHP可以插入MySQL數據庫

[英]Serialize a POST array so that Cake PHP can insert into MySQL database

這很難解釋,因為我的代碼起作用了一半。

基本上這就是我所擁有的:

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提出了其他建議,它似乎也從未發生過。

['data'] ['job']包含了我所有的字符串和int's,例如['data'] ['job'] ['title'],它們被很好地插入了,但是為了測試我的理論,我也更改了['title '] 像這樣:

$_POST['data']['Job']['title'] = 120;

使SQL發出錯誤的標題是字符串。 但是它甚至都沒有改變,標題仍然在我的表中“測試”。

branchingQuestions這樣發布:

<select name='data[Job][branchingQuestions][question" + branchCount + "]'

我有一個動態表單,可以在需要時向其中添加更多選擇框,這就是為什么我在問題部分中有一個變量。 所有這些工作正常,var_dump給了我期望的結果。

實際上,您必須編輯$ this-> request-> data數組而不是$ _POST數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM