2012-02-16 5 views
1

JSON 항목을 테이블에 삽입하려하지만이 JSON 문자열에 작은 따옴표가 있습니다. 아래 코드는 mainIdea 문자열이 Its nice이지만 원하는 것은 아포스트로피가있는 It's nice입니다. 아포스트로피로 작동하려면 아래 코드에 대해 무엇을 변경해야합니까? 내가 시도한 It\'s nice하지만 그 중 하나를 작동하지 않습니다.JSON 배열에 값을 삽입하려고 시도했습니다.

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

무슨 일이 것 상상 : 당신은 데이터베이스 쿼리에서 사용하기 전에 데이터를 이스케이프 할 필요가

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

"내 테이블에 JSON 항목을 삽입하려고합니다."그 문제는 db 정규화 101입니다. 그렇게하지 마십시오! –

+0

무슨 뜻인가요? – Snowman

+0

당신은 arrayOfRequests에 대한 새로운 테이블을 가져야하며, 각각의 테이블은 사용자 테이블에 조인 된 자체 '셀'에 있어야합니다. –

답변

1

을 :

$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

당신은뿐만 아니라 당신의 슬래시를 탈출해야 $sendBackArray', email ='이 있고 $email' OR '' = '이 포함 된 경우 발생합니다.

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

이것은 나를 위해 NULL을 준다. var_dump ($ dictionaryToBeAdded); – Snowman

+0

괜찮아. 맵 키에 대한 따옴표는 유효합니다. – mauris

+0

실제로 JSON에는 * double * 인용 된 키가 필요합니다. http://json.org를 참조하십시오. 또한 그들은 자바 스크립트에 대해 유효하지 않습니다. –

관련 문제