今天幫客戶開發模組時想嘗試看看能否吧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
按照老方法是要先吧陣列用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
留言
張貼留言