2017-01-19 2 views
0
私は、JSONデータは次のように私のデータベースに保存されている

を使用して、データベースからデコードされたJSONデータにアクセスすることはできません割り当てられたキー

$decoded = json_decode($query['field_data'],1); 
echo $decoded['primary']; 

結果:

'field_data" => '{"primary":"apple"}' 

は、その後、私は、配列にそれをデコード

私はそれです:

Undefined index: primary 

私はそれをデバッグしようとすると値を見ることができます。 は、私は私の問題

$data = '{"primary":"apple"}'; 
$decoded = json_decode($data,1); 
echo $decoded['primary']; 

を隔離するために、データベースから照会せずにデータをデコードしようとしましたが、それがうまく働きました。キーを使用してクエリデータから値にアクセスするにはどうすればよいですか?

+0

5.7.8以降のMySQLは、ネイティブJSONデータ型をサポートしています。フィールドのデータ型を変更することができれば、あなたの人生は楽になります。 –

+0

だから、もしあなたが 'var_dump($ query ['field_data'])'にあなたが期待しているものが確実であれば? – BizzyBob

+0

エラー報告がありますか?オン? 'error_reporting(E_ALL)' – BizzyBob

答えて

0

ここに'field_data" => '{"primary":"apple"}'ラッピングfield_data'"を入れました。どちらも'または"のいずれかである必要があります。

=>「{ 『主』: 『りんご』}」'field_data' 同様

[OK]を、私はあなたのデータベースに正しく物事を取得する場合は、arrayのように見え、あなたがしようとしているstringが保存されていますあなたがすることができない$query['field_data']によってそれにアクセスしてください。

arrayのような文字列は、stringとは異なります。

現在の実装を使用している場合は、このアプローチを使用します。

$str = '"field_data" => "{"primary":"apple"}"'; 
list($fieldName, $json) = explode('=>', $str); 
var_dump($str,$fieldName, $json); 

も、その後、あなたはそれがまだstring

だとして$jsonきれいにする必要があるしかし、私はserializeを使用してデータを保存することをお勧めして、unserializeでアクセスします。そうすれば、データを完全にコントロールすることができます。

関連する問題