【问题标题】:Read and Write PHP Array in MYSQL在 MYSQL 中读写 PHP 数组
【发布时间】:2012-03-30 10:51:30
【问题描述】:

我想将 PHP 关联数组从 PHP 变量保存到 MYSQL 数据库,然后访问存储的值(在 MYSQL 数据库中)并在 PHP 中将其用作关联数组。

$arr = array("abc"=>"ss","aaa"=>"ddd");

现在我想保存

array("abc"=>"ss","aaa"=>"ddd");

到数据库并再次想要检索它并将其分配给变量。

我尝试使用serialize 函数,但它只将单词“Array”保存到数据库中。

【问题讨论】:

    标签: php mysql database arrays associative-array


    【解决方案1】:

    一种方法是在插入之前将其序列化为字符串,然后在获取后将其反序列化为数组。有不同的方法可以做到这一点,但如果您的数组很简单,那么 JSON 是一种可接受的序列化格式。

    你可以在路上json_encode

    $str = json_encode($arr);
    // Insert $str into db
    

    然后json_decode 稍后:

    // Got $str from db
    $arr = json_decode($str);
    

    另一种方法是serialize

    $str = serialize($arr);
    // Insert $str into db
    

    还有unserialize:

    // Got $str from db
    $arr = unserialize($str);
    

    与 json_encode 和 json_decode 相比,这将使您可以序列化更多的可能性,但手动检查数据库以查看其中的内容将更加困难。

    所以这两种方法都有优点和缺点。还有其他序列化/编组格式。

    【讨论】:

    • 这是一个很好的解决方案,但我需要的不是 json_encoding ...我需要在 PHP 中使用该数组,因此无法将其保存为 json
    • 我需要在很多地方使用它,所以需要一些更好的东西。希望你能理解我为什么需要它。我认为它应该类似于将数组转换为字符串,然后将字符串转换为数组。像 json 一样,但我需要的不是 json
    • @user794624,查看我的更新。还有序列化和反序列化。
    • 我使用序列化函数,但数据库中的内容是一个单词“数组”而不是数组的内容。我的数据库类型是中文本
    • @user794624,那么问题出在代码的其他部分,因为序列化/反序列化肯定有效。请发布您使用这些方法的代码,可能存在错误。
    【解决方案2】:

    正如 Ben 所说,您需要先对数组进行序列化,然后再将其存储到数据库中,然后在读回数组时对其进行反序列化。如果 'Array' 正在写入您的数据库,那么您可能没有将 serialize() 的结果保存到您正在写入的变量中。

    <?php
    
    function store()
    {
        $arr = array("abc"=>"ss","aaa"=>"ddd");
    
        $serialized = serialize($arr);
    
        // Store $serialized to the database
    }
    
    function retrieve()
    {
        // Retrieve $serialized from the database
    
        $arr = unserialize($serialized);
    }
    

    【讨论】:

      猜你喜欢
      • 2013-06-16
      • 2013-04-26
      • 2010-11-26
      • 1970-01-01
      • 2015-01-16
      • 2019-05-26
      • 2018-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多