跳到主要內容

xoops模組開發->吧陣列改成字串儲存資料庫及吧資料表讀取字串改成陣列的方法-教學撰寫:徐嘉裕Neil hsu

今天幫客戶開發模組時想嘗試看看能否吧PHP陣列數值直接存進資料表中,然後資料表欄位格式是設成varchar,結果還是GG,存進去的欄位數值只顯示一個Array如下圖:


按照老方法是要先吧陣列用foreach解出來在串成,變成字串後儲存,不過現在找到一個更方便的方法了,用php的serialize()函數就能直接吧陣列轉成字串然後存進資料表中,之後再用unserialize()吧資料表字串再轉成陣列,非常好用,實際測試看看!!


假設要儲存像這可以多選的checkbox欄位,取值為陣列$gifts[]




然後我們建一個phpconversion的function放在Xoops模組的function.php檔案裡面


//陣列轉字串or字串轉陣列

function phpconversion($conversion="",$type="") {

if($type=='serialize'){ //陣列轉字串

$conversion=serialize($conversion);

}

if($type=='unserialize'){ //字串轉陣列

$conversion=unserialize($conversion);

}

return $conversion;

}


再到要儲存資料表的地方呼叫函數吧$gifts陣列轉成字串

$gifts=phpconversion($conversion=$_POST['gifts'],$type="serialize");

//紅字可以設為serialize為陣列轉字串

這樣$gifts存進資料表後就會是字串形式!!不會再顯示Array

接者如果要讀取資料表的gifts欄位值,然後轉成陣列的方法如下!!

$giftsoid=phpconversion($conversion=$productlimt['gifts'],$type="unserialize");

//紅字可以設為unserialize為字串轉陣列

最後再用foreach的$val值就能取出$giftsoid陣列值了。


教學撰寫:徐嘉裕 Neil hsu



留言