我正在尝试在我的表中插入一个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'");
}
答案 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"}';