2012年10月7日 星期日

[php]serialize將陣列.物件以字串存進資料庫

1.要轉換的陣列(物件的方法也一樣):
$qq=array('0'=>'第一個','1'=>array('0'=>'第二個的第一個','1'=>'第二個的第二個'),'3'=>'第三個','4'=>'第四個');

2.利用PHP本身提供的函數serialize()將陣列/物件轉換為字串
$aa=serialize($qq);
轉換後的字串:
a:4:{i:0;s:9:"第一個";i:1;a:2:{i:0;s:21:"第二個的第一個";i:1;s:21:"第二個的第二個";}i:3;s:9:"第三個";i:4;s:9:"第四個";}

3.存進資料庫並且取出
$connection=mysql_connect('localhost','test','test') or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db('test',$connection) or die('不存在');
mysql_query("SET NAMES 'utf8'",$connection);
$sqlstr="insert into test3(name)values('".$aa."')";
$result=mysql_query($sqlstr);
$id=mysql_insert_id();
$sqlstr2="select id,name from test3 where id=".$id;
$result2=mysql_query($sqlstr2);
$row2=mysql_fetch_array($result2);

4.將取出來的字串轉換為PHP陣列
$qq2=array();
$qq2=unserialize($row2['name']);

5.顯示陣列內容:
foreach($qq2 as $key=>$value){
 if( is_array($qq2[$key])){
  echo '['.$key.']</br>';
  foreach($qq2[$key] as $key2=>$value2){
   echo '└>['.$key2.']->'.$qq2[$key][$key2].'</br>';
  }
  continue;
 }
 echo '['.$key.']->'.$qq2[$key].'</br>';
}
顯示結果:
[0]->第一個
[1]
└>[0]->第二個的第一個
└>[1]->第二個的第二個
[3]->第三個
[4]->第四個

沒有留言:

張貼留言