function save($uid, $key, $val){
global $dbh; // The PDO object
$sql = $dbh->prepare("SELECT `json` FROM users WHERE `id`=?");
$sql->execute(array($uid));
$data = $sql->fetch();
$arr = json_decode($data['json'],true);
$arr[$key] = $val; // Update the value
$sql=$dbh->prepare("UPDATE `users` SET `json`=? WHERE `id`=?");
$sql->execute(array(
json_encode($arr),
$uid
));
}
其中 $uid是用户的 id,$钥匙-要更新的 JSON 键,它的值被称为 $val。
获取值函数
function get($uid, $key){
global $dbh;
$sql = $dbh->prepare("SELECT `json` FROM `users` WHERE `id`=?");
$sql->execute(array($uid));
$data = $sql->fetch();
$arr = json_decode($data['json'], true);
return $arr[$key];
}
我也同意,有许多有效的情况下,一些数据最好序列化为数据库中的字符串。主要原因可能是当它没有被定期查询时,以及当它自己的模式可能发生变化时——您不希望改变相应的数据库模式。第二个原因是,当序列化的字符串直接来自外部源时,您可能不希望解析所有这些字符串并不惜任何代价地在数据库中提要,直到您使用任何。因此,我将等待新的 MySQL 版本支持 JSON,因为它将更容易在不同的数据库之间切换。