Discuz!官方免费开源建站系统

 找回密码
 立即注册
搜索

[已答复] 如何自动修复自定义字段的长度

[复制链接]
zh99998 发表于 2009-9-20 11:04:42 | 显示全部楼层 |阅读模式
本帖最后由 zh99998 于 2009-9-20 19:40 编辑

手动转换数据之后,自定义字段不能显示
经过检查数据库发现是转换过程中字段长度定义错误
  1. a:2:{i:0;s:5:"#FF0000";i:1;s:6:"未知";}
复制代码
现在是这样的
很明显那个s:5:"#FF0000"是错误的,手动改成s:7之后就能显示了

但是因为资讯数太多不可能手动改,所以求一个自动修复的方法
注:每条资讯的字段长度可能是不相等的,然后我的mysql是utf8码,不过有别的编码的也行
回复

使用道具 举报

littlehz 发表于 2009-9-20 14:13:45 | 显示全部楼层
a:2:{i:0;s:5:"#FF0000";i:1;s:6:"未知";}这样的是PHP的数组用serialize函数序列化过的,容易把一个数组中的多个变量数据存储在数据库一个字段中。正常情况下,取出个a:2:{i:0;s:5:"#FF0000";i:1;s:6:"未知";}是用unserialize函数反序列化的。

如果说你要改这个s后面的值,应该自己写个PHP,连接数据库,取出这个a:2:{i:0;s:5:"#FF0000";i:1;s:6:"未知";}数据,用PHP的正则表达式取出其中的 #FF0000来,用php函数计算这个#FF0000的字节长度,然后写入到s:后面替换。

总之这是一个很复杂的操作。
回复

使用道具 举报

 楼主| zh99998 发表于 2009-9-20 19:39:44 | 显示全部楼层

您的帖子长度不符合要求。 当前长度: 2 字节系统限制: 10 到 50000 字节
回复

使用道具 举报

wo1990912 发表于 2009-10-29 15:50:35 | 显示全部楼层
Copy这就行: <!--{eval $value[customfieldtext]=unserialize($value[customfieldtext]) }-->$value[customfieldtext][0]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-9-16 05:13 , Processed in 0.115028 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表