试图将值插入JSON数组中

时间:2012-02-16 23:02:45

标签: php json

我正在尝试在我的表中插入一个JSON条目,但问题是这个JSON字符串有一个单引号字符。当mainIdea的字符串为Its nice时,下面的代码非常有效,但我想要的是带有撇号的It's nice。关于下面的代码,我需要更改什么才能使它与撇号一起使用?我试过It\'s nice,但这也不起作用。

$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'");
} 

2 个答案:

答案 0 :(得分: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) . "'");

答案 1 :(得分:0)

你也必须逃避斜线:

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