繁体   English   中英

需要反序列化数据库字段中的数据,以其纯文本替换

[英]need to unserialize data from database field, to replace with its plain text

由于某种原因,我将输入字段作为序列化数据存储到表字段中,现在需要将所有数据从序列化数据转换为纯文本。

我有大约2000条记录需要反序列化,然后使用纯文本版本进行更新。

我尝试了一些不同的操作,但仍然失败。

关于如何完成将序列化的值与序列化后的值分别插入表中相应行的任何建议。

首先备份数据库,然后执行以下操作:

$query = mysql_query("SELECT `id`, `value` FROM `table`");

while($row = mysql_fetch_assoc($query))
{
    $id = $row['id'];
    $newdata = unserialize($row['value']);

    mysql_query("UPDATE `table` SET `value` = '{$newdata}' WHERE `id` = '{$id}' LIMIT 1");

    if(mysql_affected_rows() <= 0)
    {
        print_r("Update failed on ID {$id}! \n");
    }
}

当然,您必须根据需要(表结构,序列化方法等)进行修改。

<?php foreach($volunteers as $r): ?>
  <?php
  print "UPDATE data SET monday = trim('";
  if(unserialize($r->monday) && unserialize($r->monday) != "b:0;" && unserialize($r->monday) != "PM" && unserialize($r->monday) != "AM") {
    foreach(unserialize($r->monday) as $slot):
      print $slot.' ';
    endforeach;
  }
  print "') WHERE id = ".$r->id.";<br />"; ?>
<?php endforeach; ?>

只需复制输出并在Sequel Pro中运行(ss http://cl.ly/56AG

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM