数组的修改

lijunming008 2009-06-10 12:44:37
数据库用
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";}}




我主要是想提出数据库的记录出来修改一下,再保存,不知用什么方式呢????请高手指教
...全文
119 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序猿之殇 2009-06-11
  • 打赏
  • 举报
回复
难道这年头都流行帖代码?
程序猿之殇 2009-06-11
  • 打赏
  • 举报
回复
如果你没设置为自动转义
eval('$arrName='.  trim($_POST['aaaa']). ";");    
程序猿之殇 2009-06-11
  • 打赏
  • 举报
回复
调试一下就可以了,关键是思路已经给你了.
下面测试代码成功!
<?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>
lijunming008 2009-06-11
  • 打赏
  • 举报
回复
感谢~~~~
dzxccsu 2009-06-10
  • 打赏
  • 举报
回复
在textarea上修改二维数组?
海诗美妆 2009-06-10
  • 打赏
  • 举报
回复
不执行serialize/unserialize,直接select/update修改数据内容,这样就可以保证个是不出格式错误了,但是,难免人为错误。

lz这种数据保存的方式就很奇怪,
serialize/unserialize是php将数据以文本形势转换的函数,
serialize的初衷并不是输出认为操作的数据,
你这种做法很危险。
lijunming008 2009-06-10
  • 打赏
  • 举报
回复
得不到
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";}}
这种格式~~
lijunming008 2009-06-10
  • 打赏
  • 举报
回复
$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));

这个输出可以的啊~~~
lijunming008 2009-06-10
  • 打赏
  • 举报
回复
$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楼那个打错了~~
fxs_2008 2009-06-10
  • 打赏
  • 举报
回复
测了下,数组字串eval出错,生成不了数组变量
lijunming008 2009-06-10
  • 打赏
  • 举报
回复
你有试过吗?我试过是不行的啊~~~
fxs_2008 2009-06-10
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 jakey9826 的回复:]
PHP code$data['name']=var_export(unserialize($data['name']),true);//输出到textarea


//xxx为textarea名eval("\$arrName = \$_POST['xxxx'];");//strName为要保存到数据库库里的$strName=serialize($arrName);
[/Quote]

这个应是正解了
lijunming008 2009-06-10
  • 打赏
  • 举报
回复
真的不行啊高手
$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)可以正常输出数组的

可以用来测试一下你的代码啊.....真的麻烦你啦
程序猿之殇 2009-06-10
  • 打赏
  • 举报
回复
$data['name'] = var_export(unserialize($data['name']),true); 
//输出到textarea


//xxx为textarea名
eval("\$arrName = \$_POST['xxxx'];");
//strName为要保存到数据库库里的
$strName = serialize($arrName);
lijunming008 2009-06-10
  • 打赏
  • 举报
回复
我select时这样写,得不出原来的数据库的数据哦

$data['name'] = var_export(unserialize($data['name']),true);
eval("\$arrName = \$data['name'];");
$data['name']=serialize($arrName);
lijunming008 2009-06-10
  • 打赏
  • 举报
回复
eval("\$arrName = \$data['name'];");
这个语句有没有问题呢??什么作用的??
程序猿之殇 2009-06-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 lijunming008 的回复:]
//不过用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";…
[/Quote]
不可能得不到.
你从数据库里取出来,将var_export(unserialize($xxx))结果传给textarea.
修改以后用eval将修改过的内容,传给$arrName,然后再将序列化后的数据update到数据库.
这个流程是不存在任何问题的.
lijunming008 2009-06-10
  • 打赏
  • 举报
回复
保存时应该将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里的这段字符以数组的方式保存呢???
zgycsmb 2009-06-10
  • 打赏
  • 举报
回复
不用序列化,直接SELECT,然後再UPDATE,
syy870714 2009-06-10
  • 打赏
  • 举报
回复
LZ啊! 你的那个字符是错的吧!
你可以 var_dump(unserialize(....))

你给的那个串 返回的是个 false 弄错啦!
楼上说的对,你再仔细点吧
加载更多回复(6)

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧