Home  >  Article  >  Backend Development  >  php关于从数据库一个字段里面提取数据的问题

php关于从数据库一个字段里面提取数据的问题

WBOY
WBOYOriginal
2016-06-23 13:53:561103browse

原来我的网站后台有一张表,是从数据库多个字段里面输出字段的。现在数据库结构换了,几个数据全部融合在一个字段里面。现在就要从一个字段里面读取数据出来,这个应该怎么写代码?我把代码贴出来。

以前的代码:有8个字段分别存放数据。

=date("Y-m-d H:i:s",$row['time']);?>
=$row['name'];?>
=$row['url'];?>
=$row['word']?>
=$row['rpage']?>
=$row['ip']?>
?=$row['ip_city'];?>

现在只有一个字段:data,这5个字段的数据全部融合在一个字段里面。请问现在应该怎么写代码输出在前台表格上面?

data字段里面存放的数据类型
a:9:{s:4:" time";i:1405306402;s:4:" name";s:6:"新晨";s:5:" url";s:1:"-";s:4:" word";s:1:"-";s:5:" rpage";s:29:"http://www.baidu.com/test.html";s:5:"cpage";s:1:"-";s:2:"ip";s:15:"117.151.180.150";s:7:" ip_city";s:31:"中国北京市 北京市移动";s:4:"miao";s:1:"5";}


回复讨论(解决方案)

$row = unserialize($row['data']);

$row = unserialize($row['data']);



比如把data数据里面的time后面的1405306402单独提出来应该怎么提取?

$row = unserialize($row['data']);


echo date("Y-m-d",$row[0]);

你 print_r($row); 看看就知道了

??使用了序列化,?行一次反序列化即可,但你的??有??
直接使用unserialize?返回false。

$content = 'a:9:{s:4:"time";i:1405306402;s:4:"name";s:6:"新晨";s:5:"url";s:1:"-";s:4:"word";s:1:"-";s:5:"rpage";s:29:"http://www.baidu.com/test.html";s:5:"cpage";s:1:"-";s:2:"ip";s:15:"117.151.180.150";s:7:"ip_city";s:31:"中国北京市 北京市移动";s:4:"miao";s:1:"5";}';var_dump(unserialize($content)); // bool(false)


因?你的??中包含了\r ?致?算?度不?
因此需要?理一下才可以正常unserialize

function mb_unserialize($serial_str) {    $serial_str= preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $serial_str );    $serial_str= str_replace("\r", "", $serial_str);          return unserialize($serial_str);}$content = mb_unserialize($content);//?取timeecho $content['time']; //1405306402

居然?有?分。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn