2012-02-16 7 views
1

JSONエントリをテーブルに挿入しようとしていますが、このJSON文字列には一重引用符が含まれています。以下のコードはmainIdeaの文字列がIts niceだが、私が欲しいのはアポストロフィ付きのIt's niceである。アポストロフィで動作させるには、以下のコードについて何を変更する必要がありますか?私はIt\'s niceを試しましたが、どちらもうまくいきません。JSON配列に値を挿入しようとしています

あなたは同様にあなたのスラッシュをエスケープする必要が
$jsonDic='{"mainName": "Steve Jobs","mainIdea": "Its nice"}'; 
$dictionaryToBeAdded=json_decode($jsonDic); 
var_dump($dictionaryToBeAdded); 
$data=mysql_query("SELECT arrayOfRequests FROM users WHERE email='$email'"); 
if($result = mysql_fetch_array($data)) { 
    //get json encoded arrayOfNotifs 
    $decodeArray=$result['arrayOfRequests']; //this is empty 
    //decode it 
    $arrayOfRequests=json_decode($decodeArray); 
    //add dictionary to be added 
    $arrayOfRequests[]=$dictionaryToBeAdded; 
    $sendBackArray=json_encode($arrayOfRequests); 
    //update db 
    mysql_query("UPDATE users SET arrayOfRequests ='$sendBackArray' WHERE email='$email'"); 
} 
+0

"私のテーブルにJSONエントリを挿入しようとしています"というのは、DBの正規化101です。 –

+0

どういう意味ですか? – Snowman

+0

あなたはarrayOfRequestsのための新しいテーブルを持っているべきです、それぞれは独自の 'セル'がusersテーブルに結合されています。 –

答えて

1

あなたがデータベースクエリでそれを使用しようとする前に、あなたはあなたのデータをエスケープする必要があります。

mysql_query("UPDATE users SET arrayOfRequests ='$sendBackArray' WHERE email='$email'"); 
// ---------------------------------------------^       ^
// --------------------------------------------------------------------------+ 

がどうなるか想像してみて$sendBackArray', email ='が、$email' OR '' = 'が含まれている場合に発生します。

mysql_query("UPDATE users SET arrayOfRequests ='" . mysql_real_escape_string($sendBackArray) . "' WHERE email='" . mysql_real_escape_string($email) . "'"); 
0

$jsonDic='{"mainName": "Steve Jobs","mainIdea": "It\\\'s nice"}'; 
+0

これは私にNULLを与えていますvar_dump($ dictionaryToBeAdded); – Snowman

+0

大丈夫です。マップキーの引用符は有効です。 – mauris

+0

実際には、JSONには* double *の引用符が必要です。 http://json.orgを参照してください。また、彼らはjavascriptのために無効ではありません。 –

関連する問題