数据库用
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";}}
我主要是想提出数据库的记录出来修改一下,再保存,不知用什么方式呢????请高手指教
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";}}
我主要是想提出数据库的记录出来修改一下,再保存,不知用什么方式呢????请高手指教
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";}}
这种格式~~
serialize/unserialize是php将数据以文本形势转换的函数,
serialize的初衷并不是输出认为操作的数据,
你这种做法很危险。
eval("\$arrName = \$data['name'];");
//你要得到的数据
$strName = serialize($arrName);
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";}}
这格式
echo serialize($a);
你就明白了
你可以 var_dump(unserialize(....))你给的那个串 返回的是个 false 弄错啦!
楼上说的对,你再仔细点吧
'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里的这段字符以数组的方式保存呢???
你从数据库里取出来,将var_export(unserialize($xxx))结果传给textarea.
修改以后用eval将修改过的内容,传给$arrName,然后再将序列化后的数据update到数据库.
这个流程是不存在任何问题的.
这个语句有没有问题呢??什么作用的??
eval("\$arrName = \$data['name'];");
$data['name']=serialize($arrName);
//输出到textarea
//xxx为textarea名
eval("\$arrName = \$_POST['xxxx'];");
//strName为要保存到数据库库里的
$strName = serialize($arrName);
$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)可以正常输出数组的可以用来测试一下你的代码啊.....真的麻烦你啦
这句啊,1楼那个打错了~~
print_r(unserialize($name));这个输出可以的啊~~~
下面测试代码成功!
<?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>
eval('$arrName='. trim($_POST['aaaa']). ";");