2010-11-28 26 views
0

エンコードされた配列をデータベースに格納します。デコードしようとすると、nullで返されます。json_decodeがnullを返す

[{"id":13,"qty":"1"}] 

配列はPHPでエンコードされているため、問題の原因はわかりません。

おかげ

+3

ここでは正常に動作します。 –

+3

問題が発生する可能性があるため、使用しているコードを表示してください... –

+0

print_r(): 'Array([0] => stdClass Object([id] => 13、[qty ] => 1)) ' – Jonah

答えて

0

は、印刷しよう:

json_last_error() 
0

あなたは、データベース内の配列を格納したい場合は個人的にserialize();unserialize();機能が良いだろう。 JavaScriptにJSON文字列を返すには、JSON関数を使用する必要があります。次に、データベースから戻って配列にデータを有効にする

$array = array('data','more data','superdata'=>'even more data'); 
$array = serialize($array); 
// Store array in database after serialized 

、あなたはでしょう...

// Fetch the data from the database 
$data = $row['myDataArray']; 
$array = unserialize($data); 
echo $array['superdata']; // Would produce: "even more data" 

うまくいけば、これはあなたの問題を少しあなたを助けます。 JavaScriptに送信するためにJSONに変換する必要がある場合は、json_encode($array);関数を使用します。

+1

"should"はここでは強く、特にJSONの結果は通常、基本型の 'serialize()'結果よりも短いためです。 –

+0

大量のデータを格納していた場合は、影響が出る可能性があります。私はちょうどserializeがより信頼でき、JavaScript JSONではなくPHPだけで作業している最善の方法だと感じています。 –

0

私は別の文脈ではあるが、同様の問題がありました。私のケースでは、Javascript JSON.stringifyでエンコードされたJSON文字列をデコードし、隠しテキストフィールドに格納し、ページがPOST edの後にPHPでデコードしようとしていました。デコードする前にstripslashes関数を適用すると便利でした。

$arrMyOutput = json_decode(stripslashes($yourJSON_string_goes_here));