【问题标题】:Php unserialize array of serializedphp unserialize 序列化数组
【发布时间】:2013-03-01 03:10:42
【问题描述】:

我有一个存储序列化值的 SQL 列。我想查询表,获取所有列值,对它们进行反序列化,然后处理结果数组中的数据。

 $g1 = mysql_query("SELECT q4 FROM qa");
 $g2 = (mysql_fetch_array($g1)); 

但 $g2 不会返回所有列值。另外,在我得到 $g2 数组中的所有值之后,我应该如何反序列化结果数组? 谢谢!

【问题讨论】:

  • 你是什么意思,但它不返回所有的值?通过 mysql 工作台或其他工具检查表以确保数据确实存在。要反序列化,您可以在数组上使用 implode(),或者在遍历它们时使用 list() 将每个值分配给一个变量

标签: php sql serialization


【解决方案1】:

您需要遍历行

喜欢:

$g1 = mysql_query("SELECT q4 FROM qa");
$g2 = Array();

while($row = (mysql_fetch_array($g1))) {
    $g2[] = $row;
}

假设您使用 PHP 序列化数据,答案是 unserialize() 方法

【讨论】:

    【解决方案2】:

    如果 q4 是使用serialize 函数序列化的字符串,则需要使用 unserialize 函数。

    $g2 = array();
    foreach(mysql_fetch_array($g1) as $row) {
        $g2[] = unserialize($row[0]);
    }
    

    【讨论】:

      【解决方案3】:

      试试这个:

      $g1   = mysql_query("SELECT q4 FROM qa");
      $val  = array();
      while($g2   = mysql_fetch_array($g1)){
          $val[]  = unserialize($g2['q4']);
      }
      
      echo "<pre>"; 
      print_r($val);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-11
        • 2012-06-10
        • 2014-07-14
        • 1970-01-01
        • 2011-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多