首页 > 解决方案 > 如何将会话数据保存到数据库然后恢复它

问题描述

我有一个 Joomla 站点,我修改了一个组件,因为我需要将 Session 的一些内容存储到 db 记录中,以便稍后我可以将这些数据恢复到 Session。

这里有一段代码:

// read session data
$session = \JFactory::getSession();
$mysection= $session->get('mysection', false);
$mysection_json = json_encode($mysection);

// Get a db connection.
$db = \JFactory::getDbo();
$query = $db->getQuery(true);
$columns = array('chiave', 'valore');
$values = array($db->quote($param['transactionId']), $db->quote($mysection_json));

// save to db
$query
    ->insert($db->quoteName('#__mytable'))
    ->columns($db->quoteName($columns))
    ->values(implode(',', $values));
$db->setQuery($query);
$db->execute();

稍后在我的代码中,我需要将数据恢复到会话

// Get a db connection.
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName('valore'));
$query->from($db->quoteName('#__mytable'));
$query->where($db->quoteName('chiave') . ' = ' . $db->quote($post_portal['id_transazione']));
        $db->setQuery($query);
$result = $db->loadResult();

$session = JFactory::getSession();
$mysection= $session->get('mysection', false);
if(!$mysection) {
    $session->set('mysection', json_decode($result));
}

但似乎 json_decode 导致的 dataa 格式存在问题,因此它们适合将它们直接存储到会话中。

您对如何修改我的代码或使用其他格式然后使用 json 来存储和恢复这些数据有任何想法吗?

标签: phpjoomla

解决方案


推荐阅读