2016-04-23 72 views
0

我有一個大麻煩。我有一個控制器方法接收以JSON格式化的POST請求。CakePHP不保存長文本

當我保存JSON數據時,MySQL中長文本的一個字段沒有保存。但如果我寫短文本,比如「Hello World」,它會保存在數據庫中。我不知道這裏有什麼問題。

這是我的Javascript代碼:

   $http({ 
        url: 'http://customblahblahblah', 
        method: 'POST', 
        data: "user_id="+ user_id + 
        "&token="+ token + 
        "&object="+angular.toJson(myobject),.... 

這是我的PHP代碼:

public function save(){ 
    if($this->request->is('post')){ 
     if($this->checkUser($this->request->data['user_id'], $this->request->data['token'])){ 
      $myObject = json_decode($this->request->data['object'], true); 
      if($this->MyObject->save($myObject)){ 
       ..... 
      } 
    .... 
      } 
     } 
     }  

這裏有什麼問題?

因爲如果在屬性中設置了像「Hello World」這樣的文本,它仍然保存,但如果我發送長文本,就像報紙文章似乎保存(因爲不會拋出異常,而Model-> save()返回true)但數據不被保存。

+0

顯然你有一個問題,你想保存文本的數據庫表字段的類型。 – Salines

+0

它設置爲與latin1_general_ci整理長文本 –

回答

0

您正在將您的json字符串解碼爲對象並嘗試將對象保存在文本字段中。我認爲您需要將它作爲JSON字符串存儲在數據庫中,然後在閱讀時對其進行解碼。

嘗試:

if($this->MyObject->save(json_encode($myObject))){ 
       ..... 
} 

如果您仍然有問題也可能是數據庫數據類型。在過去,我只使用text作爲json字符串的數據類型。

+0

嗨,感謝您的回覆。我檢查過了,但我仍然遇到麻煩。我不知道......有時它能正常工作,但大多數不是。我正在使用文本角度...我不知道 –

+0

在保存()之前,如果你調試($ myObject);退出;'是否設置了數據? –