出于某种原因,我将输入字段作为序列化数据存储到表字段中,现在需要将所有数据从序列化数据转换为纯文本。
我有大约2000条记录需要反序列化,然后用纯文本版本更新它。
我已经尝试了几种不同的方法,但仍然没有成功。
关于如何使用未序列化到表中各自行的值更新序列化值的任何建议。
发布于 2011-03-08 12:40:09
首先备份你的数据库,然后像这样的东西应该可以工作:
$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");
}
}当然,您必须根据您的需要(表结构、序列化方法等)对其进行修改。
发布于 2011-03-09 10:21:06
<?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)中运行
https://stackoverflow.com/questions/5228372
复制相似问题