项目的某些数据保存的时候用了序列化,然后后台需要用存储过程处理一些定时作业。对于在PHP序列化保存的字段,mysql 有对应的函数反序列化,然后提取数据使用吗?

解决方案 »

  1.   

    没有直接的,这个“序列化”完全是程序上的概念。不过你可以在MYSQL中通过字符串等函数和实现类似的功能。
      

  2.   

    a:4:{i:0;a:2:{i:0;a:2:{s:8:"point_id";s:2:"19";s:6:"map_id";s:2:"11";}i:1;a:2:{s:8:"point_id";s:0:"";s:6:"map_id";s:0:"";}}i:1;a:2:{i:0;a:2:{s:8:"point_id";s:2:"20";s:6:"map_id";s:2:"12";}i:1;a:2:{s:8:"point_id";s:0:"";s:6:"map_id";s:0:"";}}i:2;a:2:{i:0;a:2:{s:8:"point_id";s:2:"21";s:6:"map_id";s:2:"13";}i:1;a:2:{s:8:"point_id";s:0:"";s:6:"map_id";s:0:"";}}i:3;a:2:{i:0;a:2:{s:8:"point_id";s:2:"22";s:6:"map_id";s:2:"14";}i:1;a:2:{s:8:"point_id";s:0:"";s:6:"map_id";s:0:"";}}} 
    这么一段数据在mysql用什么函数能处理出来?还真费神?不会用正则吧
      

  3.   

    在mysql 存储过程里方便使用,提取数据,在php里反序列化后是个多维数组 [0]['point_id'],[0]['map_id'],[1]['point_id'],[1]['map_id']...
      

  4.   

    简单说呢,我就是要一个能在mysql存储过程里处理 使用“序列化”保存的字段的一个方法,能够在存储过程实现反序列化,能够方便的提取数组里每项的值进行判断或者其他处理。比如处理成一个多维数组(前提是mysql sp能像php那样方便的使用数组),可以循环的检查每项跟我要搜索的关键字是否匹配,匹配情况下作相应操作。具体说呢,这个表是一个地图表(表名:maps),然后序列化保存数据的那个字段(字段名:map_exit)呢,保存的是这个地图四周相邻的地图Id(map_id),以及通往该地图的入口Id(point_id),对应东南西北这个顺序,在数组里以0,1,2,3这个顺序保存.然后我在存储过程里要完成的逻辑 就是循环搜索地图表的记录,查找相邻地图符合指定参数地图Id的记录。因为该项数据是序列化后保存,具体格式就如上面列出,我现在不知道在mysql 存储过程用什么方法处理出来,然后能方便的进行匹配。Maps表字段结构: id,map_name,map_x,map_y,map_exit,point_count
      

  5.   

    看不懂你的描述。 (不要高估你的汉语表达能力或者我的汉语理解能力)
       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。