the Web Design Speciailist
php serialize將陣列.物件以字串存進資料庫
2017-09-28 12:25:49  PHP

php serialize將陣列.物件以字串存進資料庫,可針對固定式的資料方式進行儲存

如果是活的資料表,如果往後要維護增加資料,會顯的很麻煩。


1.要轉換的陣列(物件的方法也一樣):

  1. $qq=array('0'=>'第一個','1'=>array('0'=>'第二個的第一個','1'=>'第二個的第二個'),'3'=>'第三個','4'=>'第四個');

2.利用PHP本身提供的函數serialize()將陣列/物件轉換為字串

  1. $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:"第四個";}


※ 小備註一下

可以將上面的字串md5

當大量資料做比對時,可以減少資料庫的比對搜尋(並可以加快速度)


3.存進資料庫並且取出

  1. $connection=mysql_connect('localhost','test','test') or trigger_error(mysql_error(),E_USER_ERROR);
  2. mysql_select_db('test',$connection) or die('不存在');
  3. mysql_query("SET NAMES 'utf8'",$connection);
  4. $sqlstr="insert into test3(name)values('".$aa."')";
  5. $result=mysql_query($sqlstr);
  6. $id=mysql_insert_id();
  7. $sqlstr2="select id,name from test3 where id=".$id;
  8. $result2=mysql_query($sqlstr2);
  9. $row2=mysql_fetch_array($result2);

4.將取出來的字串轉換為PHP陣列

  1. $qq2=array();
  2. $qq2=unserialize($row2['name']);

5.顯示陣列內容:

  1. foreach($qq2 as $key=>$value){
  2. if( is_array($qq2[$key])){
  3. echo '['.$key.'] ';
  4. foreach($qq2[$key] as $key2=>$value2){
  5. echo '└>['.$key2.']->'.$qq2[$key][$key2].' ';
  6. }
  7. continue;
  8. }
  9. echo '['.$key.']->'.$qq2[$key].' ';
  10. }

顯示結果:

[0]->第一個
[1]
└>[0]->第二個的第一個
└>[1]->第二個的第二個
[3]->第三個
[4]->第四個