数据库用
a:1:{s:5:"aaaaa";a:6:{i:0;s:7:"bbbbbbb";i:1;s:7:"ccccccc";i:2;s:10:"dddddddddd";i:3;s:9:"eeeeeeeee";i:4;s:6:"ffffff";i:5;s:5:"ggggg";}s:8:"hhhhhhhh";a:7:{i:0;s:4:"iiii";i:1;s:5:"jjjjj";i:2;s:4:"kkkk";i:3;s:8:"llllllll";i:4;s:13:"mmmmmmmmmmmmm";i:5;s:11:"nnnnnnnnnnn";i:6;s:4:"oooo";}}
这种方式记录了数组~~~我现想提取出来放在textarea上修改,用unserialize转化为数组,怎样显示到textarea上
发现用print_r(unserialize($data['name']));是不行的,在网上找了找用下边的可以显示在textarea上
var_export(unserialize($data['name']),true);
array (
  'aaaa' => 
  array (
    0 => 'bbbbbbb',
    1 => 'ccccccc',
    2 => 'dddddddddd',
    3 => 'eeeeeeeee',
    4 => 'ffffff',
    5 => 'ggggg',
  ),
  'hhhhhhhh' => 
  array (
    0 => 'iiii',
    1 => 'jjjjj',
    2 => 'kkkk',
    3 => 'llllllll',
    4 => 'mmmmmmmmmmmmm',
    5 => 'nnnnnnnnnnn',
    6 => 'oooo',
  ),
)
但修改后用serialize($data['name'])转换,得不到之前的格式,不知什么原因!!!!!
a:1:{s:5:"aaaaa";a:6:{i:0;s:7:"bbbbbbb";i:1;s:7:"ccccccc";i:2;s:10:"dddddddddd";i:3;s:9:"eeeeeeeee";i:4;s:6:"ffffff";i:5;s:5:"ggggg";}s:8:"hhhhhhhh";a:7:{i:0;s:4:"iiii";i:1;s:5:"jjjjj";i:2;s:4:"kkkk";i:3;s:8:"llllllll";i:4;s:13:"mmmmmmmmmmmmm";i:5;s:11:"nnnnnnnnnnn";i:6;s:4:"oooo";}}
我主要是想提出数据库的记录出来修改一下,再保存,不知用什么方式呢????请高手指教

解决方案 »

  1.   

    得不到
    a:1:{s:5:"aaaaa";a:6:{i:0;s:7:"bbbbbbb";i:1;s:7:"ccccccc";i:2;s:10:"dddddddddd";i:3;s:9:"eeeeeeeee";i:4;s:6:"ffffff";i:5;s:5:"ggggg";}s:8:"hhhhhhhh";a:7:{i:0;s:4:"iiii";i:1;s:5:"jjjjj";i:2;s:4:"kkkk";i:3;s:8:"llllllll";i:4;s:13:"mmmmmmmmmmmmm";i:5;s:11:"nnnnnnnnnnn";i:6;s:4:"oooo";}} 
    这种格式~~
      

  2.   

    不执行serialize/unserialize,直接select/update修改数据内容,这样就可以保证个是不出格式错误了,但是,难免人为错误。lz这种数据保存的方式就很奇怪,
    serialize/unserialize是php将数据以文本形势转换的函数,
    serialize的初衷并不是输出认为操作的数据,
    你这种做法很危险。
      

  3.   

    在textarea上修改二维数组?
      

  4.   

    另外,你的序列化数组,用在这地,实在有些不伦不类,呵呵.//不过用eval执行代码不是很安全,在执行之前最好过滤,防止注入.
    eval("\$arrName = \$data['name'];");
    //你要得到的数据
    $strName = serialize($arrName);
      

  5.   

    不用序列化,直接SELECT,顯示出來,然後再UPDATE,UPDATE之前要過濾,防止注入
      

  6.   

    不能用数组的格式显示吗??因为这样显示方便修改啊~~~~直接select出来修改,改了后还要改字符数的,很麻烦
      

  7.   

    //不过用eval执行代码不是很安全,在执行之前最好过滤,防止注入.
    eval("\$arrName = \$data['name'];");
    //你要得到的数据
    $strName = serialize($arrName);
    这样update也得不到
    a:1:{s:5:"aaaaa";a:6:{i:0;s:7:"bbbbbbb";i:1;s:7:"ccccccc";i:2;s:10:"dddddddddd";i:3;s:9:"eeeeeeeee";i:4;s:6:"ffffff";i:5;s:5:"ggggg";}s:8:"hhhhhhhh";a:7:{i:0;s:4:"iiii";i:1;s:5:"jjjjj";i:2;s:4:"kkkk";i:3;s:8:"llllllll";i:4;s:13:"mmmmmmmmmmmmm";i:5;s:11:"nnnnnnnnnnn";i:6;s:4:"oooo";}} 
    这格式
      

  8.   

    $a = array('1',2,3);
    echo serialize($a);
    你就明白了 
      

  9.   

    LZ啊! 你的那个字符是错的吧! 
    你可以  var_dump(unserialize(....))你给的那个串 返回的是个 false   弄错啦! 
    楼上说的对,你再仔细点吧
      

  10.   

    不用序列化,直接SELECT,然後再UPDATE,
      

  11.   

    保存时应该将textarea里的array ( 
      'aaaa' => 
      array ( 
        0 => 'bbbbbbb', 
        1 => 'ccccccc', 
        2 => 'dddddddddd', 
        3 => 'eeeeeeeee', 
        4 => 'ffffff', 
        5 => 'ggggg', 
      ), 
      'hhhhhhhh' => 
      array ( 
        0 => 'iiii', 
        1 => 'jjjjj', 
        2 => 'kkkk', 
        3 => 'llllllll', 
        4 => 'mmmmmmmmmmmmm', 
        5 => 'nnnnnnnnnnn', 
        6 => 'oooo', 
      ), 

    这段字符串以数组的方式保存,再用serialize处理后就可以保存了,问题是怎样将textarea里的这段字符以数组的方式保存呢???
      

  12.   

    不可能得不到.
    你从数据库里取出来,将var_export(unserialize($xxx))结果传给textarea.
    修改以后用eval将修改过的内容,传给$arrName,然后再将序列化后的数据update到数据库.
    这个流程是不存在任何问题的.
      

  13.   

    eval("\$arrName = \$data['name'];"); 
    这个语句有没有问题呢??什么作用的??
      

  14.   

    我select时这样写,得不出原来的数据库的数据哦$data['name'] = var_export(unserialize($data['name']),true);
    eval("\$arrName = \$data['name'];"); 
    $data['name']=serialize($arrName);
      

  15.   

    $data['name'] = var_export(unserialize($data['name']),true); 
    //输出到textarea
    //xxx为textarea名
    eval("\$arrName = \$_POST['xxxx'];"); 
    //strName为要保存到数据库库里的
    $strName = serialize($arrName);
      

  16.   

    真的不行啊高手
    $name='a:2:{s:5:"aaaaa";a:6:{i:0;s:7:"bbbbbbb";i:1;s:7:"ccccccc";i:2;s:10:"dddddddddd";i:3;s:9:"eeeeeeeee";i:4;s:6:"ffffff";i:5;s:5:"ggggg";}s:8:"hhhhhhhh";a:7:{i:0;s:4:"iiii";i:1;s:5:"jjjjj";i:2;s:4:"kkkk";i:3;s:8:"llllllll";i:4;s:13:"mmmmmmmmmmmmm";i:5;s:11:"nnnnnnnnnnn";i:6;s:4:"oooo";}}';
    不信试试,这序列我试过没问题的,print_r($name)可以正常输出数组的可以用来测试一下你的代码啊.....真的麻烦你啦
      

  17.   

    测了下,数组字串eval出错,生成不了数组变量
      

  18.   

    $name='a:2:{s:5:"aaaaa";a:6:{i:0;s:7:"bbbbbbb";i:1;s:7:"ccccccc";i:2;s:10:"dddddddddd";i:3;s:9:"eeeeeeeee";i:4;s:6:"ffffff";i:5;s:5:"ggggg";}s:8:"hhhhhhhh";a:7:{i:0;s:4:"iiii";i:1;s:5:"jjjjj";i:2;s:4:"kkkk";i:3;s:8:"llllllll";i:4;s:13:"mmmmmmmmmmmmm";i:5;s:11:"nnnnnnnnnnn";i:6;s:4:"oooo";}}'; 
    这句啊,1楼那个打错了~~
      

  19.   

    $name='a:2:{s:5:"aaaaa";a:6:{i:0;s:7:"bbbbbbb";i:1;s:7:"ccccccc";i:2;s:10:"dddddddddd";i:3;s:9:"eeeeeeeee";i:4;s:6:"ffffff";i:5;s:5:"ggggg";}s:8:"hhhhhhhh";a:7:{i:0;s:4:"iiii";i:1;s:5:"jjjjj";i:2;s:4:"kkkk";i:3;s:8:"llllllll";i:4;s:13:"mmmmmmmmmmmmm";i:5;s:11:"nnnnnnnnnnn";i:6;s:4:"oooo";}}'; 
    print_r(unserialize($name));这个输出可以的啊~~~
      

  20.   

    调试一下就可以了,关键是思路已经给你了.
    下面测试代码成功!
    <?php
    if(!isset($_POST['aaaa']))
    {
    $dataName = array("user"=>array('age'=>12, 'name'=>'huo'), 'group'=>'ax');
    $dataName = serialize($dataName);
    $dataName = var_export(unserialize($dataName),true); 
    }
    else
    {
    //$aaaa = $_POST['aaaa'];
    eval('$arrName='.  trim(stripslashes($_POST['aaaa'])). ";");
    //$strName = serialize($arrName);
      $dataName = var_export($arrName, true);
    }
    ?>
    <form name='aaa' action='eavl.php' method='post'>
    <textarea name='aaaa' cols='50' rows='20'><?php echo $dataName?></textarea>
    <input type='submit' value='submit'/>
    </form>
      

  21.   

    如果你没设置为自动转义
    eval('$arrName='.  trim($_POST['aaaa']). ";");