在PHP中插入序列化数组

时间:2010-08-28 00:40:39

标签: php serialization

这是我第一次来这里,我一直把头发拉过来,所以我觉得这对我来说是个好问题。

我将一些数组数据保存到mysql数据库,然后我使用unserialize来编辑它。问题是,当我只编辑一个索引时,它会清空数组中的每个其他索引。以下是一些示例代码:

foreach($post as $key => $value)  {
     if (isset($row)) {
        if ($i > 2) { $tempArray = unserialize($row[$i]); }
     }

     $tempArray[$time] = $value;

     if ($key == 'pid' || $key == 'uid') { $data[$key] = $value; }
     else { $data[$key] = serialize($tempArray); }
     $i += 1;
     unset($tempArray);
  }

感谢您提供的任何见解。

1 个答案:

答案 0 :(得分:2)

将序列化数组数据存储在mysql中并检索并将其保存回同一个表中,以下是您必须执行此操作的方法。

从表中获取序列化数据并对其进行反序列化并将数组数据存储在变量中。通过使用我们存储数据的变量来更改数组数据。

我们再次序列化具有已修改数组的变量,并使用新的序列化数据更新mysql表字段。

例如:

$data = array(
   "uid" => "some value",
   "pid" => "some value"
);

$store_in_database = serialize($data);
/* ...do the mysql insert query to store the new data in the field (serializedfield)... */

现在更新存储在数据库表字段中的序列化数据。

/ * ...获取表格的行或记录您喜欢的任何方式(单个记录或多个)* /

foreach($db_result as $db_row){

$temp_array = $db_row['serializedfield'];
$temp_array['uid'] = "a new value";
$temp_array['pid'] = "another new value";

/* ... i wanted to add another array value */
$temp_array['akey'] = "some value";
$store_database = serialize($temp_array);
/* ... do the mysql update query to replace this new data with the old one. */
unset($temp_array);

}

以上只是为了给你一个想法。我希望你已经理解了应该如何在这里完成。