В 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));
я столкнулся точная ситуация в прошлом, когда unserialization не работал для меня, есть что-то мне не ясно, и мне нужно, чтобы узнать, Это. Может ли кто-нибудь подтвердить или сказать мне, что случилось?
N.B. Вышеприведенный код из памяти и может быть неточным, поскольку у меня нет доступа к нему.
спасибо. массив $ notify содержит среднюю, электронную почту, а также другие вещи, которые не показаны в коде, который будет вставлен в несколько полей. Я отредактирую свой вопрос, чтобы было ясно. – Mike
массив $ notify содержит объекты, отличные от электронных писем, которые не нужно сериализовать. – Mike