In Drupal, I first serialized emails that appear in the body of private messages and stored them is MySQL like this:
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); } } When I later try to retrieve them, email userialization fails, I retrieve them like this:
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; }
Maybe the way I serialized the emails is wrong? because:
dpm(unserialize($notify->emails); gives Array, Array, Array - which means:
Array( [0] => Array() [1] => Array() [2] => Array() [3] => Array() )
Surprisingly, the unserialized vulgar words are showing okay! I'm not sure is it possible to serialize the emails like this:
$notify['emails'] = serialize (array($body->emails)); I faced the exact situation in the past where unserialization did not work for me, there is something not clear to me and I need to learn it. Could anyone confirm or tell me what's wrong?
N.B. The above code is from memory and may not be accurate as I currently don't have access to it.