mysql - LimeSurvey 使用数据库中的 JSON 字符串

标签 mysql json pdo

当我使用 LimeSurvey 的管理工具向我的调查添加附加字段时,数据库中的 attributeescriptions 字段如下所示;

a:1:
{   
    s:11:"attribute_1";
    a:4:
    {
        s:11:"description";
        s:4:"Unit";
        s:9:"mandatory";
        s:1:"N";
        s:13:"show_register";
        s:1:"N";
        s:7:"cpdbmap";
        s:0:"";
    }
}

当我输入另一个时,数据库中的字段如下所示;

a:2:
{
    s:11:"attribute_1";
    a:4:
    {
        s:11:"description";
        s:4:"Unit";
        s:9:"mandatory";
        s:1:"N";
        s:13:"show_register";
        s:1:"N";
        s:7:"cpdbmap";
        s:0:"";
    }

    s:11:"attribute_2";
    a:4:
    {
        s:11:"description";
        s:9:"Something";
        s:9:"mandatory";
        s:1:"N";
        s:13:"show_register";
        s:1:"N";
        s:7:"cpdbmap";
        s:0:"";
    }
}

我现在需要一种动态方式将“Unit”和“Something”一词放入我可以使用的数组中。

这是我获取 json 字符串的代码;

$sql = $dbh->prepare($sql);
$sql->execute();
$result = $sql->fetchAll(PDO::FETCH_ASSOC);

print $result[0]["attributedescriptions"];

我在 PDO 方面很糟糕。我已经尝试过了;

$result = var_dump(json_decode($result[0]["attributedescriptions"], true);

$result = var_dump(json_decode($result["attributedescriptions"], true);

$result = var_dump(json_decode($result[0], true);

我收到错误;

Warning: json_decode() expects parameter 1 to be string, array given in /var/www/html/surveys/survey-admin/functions/functions.php on line 189 NULL

最佳答案

不是 JSON,它是序列化数据:

序列化:

$serialized_data = base64_encode(serialize($data));

反序列化:

$unserialized_data = unserialize(base64_decode($serialized_data));

base64_encode() 用于避免损坏,如果数据损坏,unserialize() 将返回 false。

关于mysql - LimeSurvey 使用数据库中的 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26635830/

相关文章:

sql - 如何在旧版 SQL Server 中生成 JSON 结果?

php - 使用 PDO 循环调用存储过程给出先前的调用结果

php - Laravel 5.0 PDO 从 MySQL 查询 float 给出不准确的结果

json - 使用 foreach Play Framework .json 模板列表对象?

java - 在代码中添加 "到字符串

php - 具有选定数据的循环形式

php - 带有特殊外来字符的UTF8编码

删除触发器之前的Mysql,如果没有where子句,防止删除?

MySql 查看性能

php - 在 mysql 中获取行创建/更新时间戳/日期