3
在Drupal的,我出現在私人郵件的正文,並將它們存儲第一序列化的電子郵件是MySQL的是這樣的:Drupal的PHP序列化和反序列化
function prvtmsg_list($body) {
$notify = array();
if (isset($body->emails)) {
$notify['mid'] = $body->mid;
$notify['emails'] = serialize($body->emails);
}
if (isset($body->vulgar_words) {
$notify['mid'] = $body->mid;
$notify['vulgar_words'] = serialize($message->vulgar_words);
}
if (isset($notify['mid'])) {
drupal_write_record('prvtmsg_notify', $notify);
}
}
當我後來試圖找回它們,電子郵件userialization失敗,我找回它們是這樣的:
function prvtmsg_list_notify() {
// Select fields from prvtmsg_notify and Drupal pm_message tables
$query = db_select('prvtmsg_notify', 'n');
$query->leftJoin('pm_message', 'm', 'n.mid = m.mid');
$query->fields('n', array('mid', 'emails', 'vulgar_words'));
$query->fields('m', array('mid', 'author', 'subject', 'body', 'timestamp'));
orderBy('timestamp', 'DESC');
$query = $query->extend('PagerDefault')->limit(20);
$result = $query->execute()->fetchAll();
$rows = array();
foreach ($result as $notify) {
$rows[] = array(
$notify->author,
$notify->subject,
implode(', ', unserialize($notify->emails)),
implode(', ', unserialize($notify->vulgar_words)),
);
}
$build = array();
$build['table'] = array(
'#theme' => 'table',
'#header' => array(
t('Author'),
t('Message subject'),
t('Emails captured'),
t('Vulgar Words Captured'),
),
'#rows' => $rows,
);
$build['pager']['#theme'] = 'pager';
return $build;
}
也許我序列化的電子郵件的方式是錯誤的?這是因爲:
dpm(unserialize($notify->emails);
給數組,數組,數組 - 這意味着:
Array( [0] => Array() [1] => Array() [2] => Array() [3] => Array() )
出人意料的是,序列化的俗詞都出現了好嗎!我不知道是否有可能要序列化這樣的電子郵件:
$notify['emails'] = serialize (array($body->emails));
我面對過去的確切情況下反序列化並沒有對我的工作,有什麼我也不清楚,我需要學習它。任何人都可以確認或告訴我什麼是錯的?
N.B.以上代碼來自內存,可能不準確,因爲我目前無法訪問它。
謝謝。 $ notify數組包含中間值,電子郵件以及代碼中未顯示的其他內容,該代碼將插入多個字段中。我會編輯我的問題來說清楚。 – Mike
$ notify數組包含除了不需要序列化的電子郵件以外的東西。 – Mike