2016-04-26 44 views
1

我知道它不是保存數據的最佳方式,但數據庫已發給我,我無法再更改它,但我需要從列overigedata中獲取數據,它是base64序列化。到目前爲止,我想出了這個,但它不是這樣工作的。base 64解碼並從中獲取數據

$result20 = $dbhandle->query("SELECT base64_decode(overigedata) FROM email WHERE 'date' BETWEEN DATE(NOW()) AND DATE(NOW() + INTERVAL 1 DAY) "); 
$row_cnt20 = $result20->num_rows; 

輸出解碼的行之一是:

a:3:{s:15:"HTTP_USER_AGENT";s:108:"Mozilla/5.0 (Windows NT 6.1; WOW64) 
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 
Safari/537.36";s:11:"REMOTE_ADDR";s:11:"80.00.00.00";s:4:"DATE"; 
s:19:"25-04-2016 15:09:35";} 

我想對其進行解碼並計算其中的日期是今天/一天行。

+1

使用[反序列化](http://php.net/manual/en/function.unserialize.php)功能 – Thamilan

+0

感謝我要看看它如何使用它感謝鏈接 – marijn

回答

0

數據存儲爲序列化格式。

$var ='a:3:{s:15:"HTTP_USER_AGENT";s:108:"Mozilla/5.0 (Windows NT 6.1; WOW64) 
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 
Safari/537.36";s:11:"REMOTE_ADDR";s:11:"80.00.00.00";s:4:"DATE"; 
s:19:"25-04-2016 15:09:35";}'; 

$data = unserialize($var); 

它將以array()格式返回數據。 在我看來你的數據有一些問題。它沒有正確序列化。