我需要打包才能为一个json键重置一个值
{
"newsletter":"1",
"contactcategories":"40",
"newslettermessagetitle":"Hey hey its the monkeys",
"newslettermessage":"And we got something to say...."
}
我正在尝试弄清楚如何格式化MYSQL UPDATE查询,该查询将在json中保留所有内容,但仅将新闻稿密钥的1更改为0。
所以基本上这会结束我的结果:
{
"newsletter":"0",
"contactcategories":"40",
"newslettermessagetitle":"Hey hey its the monkeys",
"newslettermessage":"And we got something to say...."
}
到目前为止,我有这个但是无法绕过它。甚至可以使用mysql查询更新一个json密钥和值吗?
UPDATE #__table
SET params='(SELECT *
FROM #__table
WHERE params LIKE '%\"newsletter\":\"1\"%')'i WHERE id='$id'
感谢任何可以帮助的人:) 强尼
答案 0 :(得分:0)
如果我理解你的问题:将json字符串解码为数组:
$myResultArray = json_decode($jsonString, true);
然后你可以使用关联数组。
例如:$myResultArray['newsletter'];
$sql = "UPDATE #__table SET newsletter = '".$myResultArray['newsletter']."' WHERE id='".$id."'";
答案 1 :(得分:0)
您无法在单个查询中执行此操作,因为MySql没有JSON概念。 你需要做一个选择:
"SELECT params FROM #__table WHERE id='{$id}'"
编辑php中的数据
$params = json_decode($row['params']);
$params->newsletter = 0;
然后更新
"UPDATE #__table SET params = '{json_encode($params)}' WHERE id='{$id}'"