2016-04-23 18 views
0

大きな問題があります。 JSONでフォーマットされたPOSTリクエストを受け取るコントローラメソッドがあります。CakePHPは長いテキストを保存していません

JSONデータを保存すると、MySQLの長いテキストである1つのフィールドが保存されません。しかし、 "Hello World"のような短いテキストを書くとDBに保存されます。私はここで何が間違っているのか分からない。

これは私の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」のようなテキストが設定されていると保存されますが、新聞記事のように長いテキストを送信した場合は保存するように見えます(例外は発生しないため、 save()はtrueを返しますが、データは保存されません)。

+0

明らかに、テキストを保存するDBテーブルフィールドのタイプに問題があります。 – Salines

+0

latin1_general_ci照合で長いテキストとして設定されています –

答えて

0

json文字列をオブジェクトにデコードし、オブジェクトをテキストフィールドに保存しようとしています。私はそれをJSON文字列としてDBに格納し、それを読んだら後で解読する必要があると思います。

試してみてください。それでも問題が解決されない場合

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

それは、データベースのデータ型である可能性があります。過去に私は単純にtextをjson文字列のデータ型として使用しました。

+0

こんにちは、お返事ありがとうございます。私はそれをチェックしましたが、私はまだ問題があります。私は知らない...時にはそれは正しく動作するが、ほとんどではない。私はテキスト角を使用しています...あなたが 'debug($ myObject);を' save() 'する前に私は –

+0

を知らない。 exit; 'それはデータで設定されていますか? –

関連する問題