首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要对数据库字段中的数据进行反序列化,以替换为纯文本

问需要对数据库字段中的数据进行反序列化,以替换为纯文本
EN

Stack Overflow用户
提问于 2011-03-08 12:31:48
回答 2查看 1.5K关注 0票数 0

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

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

我已经尝试了几种不同的方法,但仍然没有成功。

关于如何使用未序列化到表中各自行的值更新序列化值的任何建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-08 12:40:09

首先备份你的数据库,然后像这样的东西应该可以工作:

代码语言:javascript
复制
$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");
    }
}

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

票数 2
EN

Stack Overflow用户

发布于 2011-03-09 10:21:06

代码语言:javascript
复制
<?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)中运行

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5228372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档