Why do I have to unserialize this serialized value twice?
Posted
by 55skidoo
on Stack Overflow
See other posts from Stack Overflow
or by 55skidoo
Published on 2010-04-02T15:39:09Z
Indexed on
2010/04/02
15:43 UTC
Read the original article
Hit count: 388
What am I doing wrong here? I'm serializing a value, storing it in a database (table bb_meta), retrieving it... OK so far... but then I have to unserialize it twice. Shouldn't I be able to just unserialize once? This seems to work, but I'm wondering what point about serialization I'm missing here.
//check database to see if user has ever visited before.
$querystring = $bbdb->prepare( "SELECT `meta_value` FROM `$bbdb->meta` WHERE `object_type` = %s AND `object_id` = %s AND `meta_key` = %s LIMIT 1", $bbtype, $bb_this_thread, $bbuser );
$bb_last_visits = $bbdb->get_row($querystring, OBJECT);
//if $bb_last_visits is empty, add time() as the metavalue using bb_update_meta
if (empty($bb_last_visits)) {
$first_visit = time();
echo 'serialized first visit: ' . $bb_this_visit_time_serialized = serialize(array($bb_this_thread => $first_visit));
bb_update_meta( $bb_this_thread, $bbuser, $bb_this_visit_time_serialized, $bbtype ); //add to database, bb_meta table
echo '$bb_last_visits was empty. Setting first visit time as ' . $bb_this_visit_time_serialized . '<br>';
} else {
//else, test by unserializing the data for use.
echo 'last visit time already set: '; echo $bb_last_visits->meta_value; echo '<br>';
//fatal error - echo 'unserialized: ' . $bb_last_visits_unserialized = unserialize($bb_last_visits[0]->meta_value); echo '<br>';
echo 'unserialize: ' . $unserialized_visits = unserialize($bb_last_visits->meta_value); echo '<br>';
echo 'hmm, need to unserialize again??: '; echo $unserialized_unserialized_visits = unserialize($unserialized_visits); echo '<br>';
echo 'hey look, it\'s an array value I can finally use now. phew: ' . $unserialized_unserialized_visits[$bb_this_thread];
}
© Stack Overflow or respective owner