Serialize this - Saving Objects in PHP Keyword Discovery
Get our FREE SEO Guide
Subscribe to our newsletter to receive useful SEO tips, tricks, strategies, free ebooks that are available only to our subscribers and get this amazing SEO guide for free!

Your email is safe and will NEVER be shared with any other parties. And of course, you can unsubscribe at any time.

Name:
Email:
SEO Elite - #1 SEO Software

Who Else Wants To Finally Get A #1 Google Ranking In As Little As 7 Days... And Drive A Minimum Of 789 Unique Visitors To Your Websites Per Day?

Search engine domain position PHP Script

This script checks the search engines for a specific keyword and displays the position of given domains in the search results

Only $9.95
Coming soon ...


Self SEO Store  
SEO forum
Website templates
Flash templates
Best hosting reviews.
Free Internet & IT Magazines.
Articles archive

Submit your article

Register
Login

Search
XML news feeds
Free RSS news reader
Contact


AddThis Feed Button

Serialize this - Saving Objects in PHP

Posted by Kevin Davies on: 2005-04-10 16:13:05

Self SEO > Webmaster Articles


When building my website "Crossword Heaven" I came across a problem. I created a PHP object called "crossword" but needed to save the information in the object to a database. Now considering that this object contained a lot of information this was not an easy thing to do. Or was it?



The answer: serialize().

What the serialize() function does is take something like an array or object and converts it into a string that can be stored in a database. All I had to do so that I could save the crossword object is something like "serialize($crossword)." Easy! Some words of warning though. If you're using a version of PHP less than version 4 watch out because only properties get saved, not methods.

Here's a peek at the actual code:

$data = addslashes(serialize($crossword));
$name="";
if(isset($xwordInfo['xword_name'])){
$name = $xwordInfo['xword_name'];
}

$today = date('Y-m-d H-i-s');

$sql = "INSERT INTO `xword` ( `xword_id` , `xword_obj` , `xword_name`, `xword_owner`, `xword_width`,
`xword_height`,`xword_date`)
VALUES ('', '" . $data . "', '$name', '$owner', '$width', '$height', '$today');";

And here's the SQL to create the table 'xword':

CREATE TABLE `xword` (
`xword_id` int(11) NOT NULL auto_increment,
`xword_obj` blob NOT NULL,
`xword_name` varchar(100) NOT NULL default '',
`xword_owner` varchar(100) NOT NULL default '',
`xword_width` int(11) NOT NULL default '0',
`xword_height` int(11) NOT NULL default '0',
`xword_date` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`xword_id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

You'll see that I used the addSlashes() function. That's because when the crossword object was serialized it contained characters like double quotes. These had to be escaped before the crossword could be saved to the database.

Now having saved a crossword object to a database I had to have a way to get it back. Surely, if there was a method to serialize an object there had to be one to unserialize an object, right? And yes, there is: unserialize().

As you'd expect, unserialize() works the same way as serialize(), but in the opposite direction. You give it some serialized data and it returns the thing that was serialized. To get the crossword back all I had to do was something like "unserialize($crosswordData)."

Here's a look at the code:

$xwordId = (get_magic_quotes_gpc()) ? $xwordId : addslashes($xwordId);

$sql = "SELECT xword_id, xword_obj, xword_name, xword_age from w3b_xword where xword_id=$xwordId";
$result = parent::getSQL($sql);
$row = parent::getRow($result);

if(parent::getNumRows($result)>0){
$crossword = unserialize($row['xword_obj']);
}

And that's it. Obviously serialize() and unserialize() are pretty handy functions to have around. And in my case I couldn't do without them.

About the Author

Kevin Davies is the webmaster of Crossword Heaven (http://www.crosswordheaven.com) - a site that lets you create and solve crosswords online. If you're a webmaster you can also link to crosswords. Crosswords are a great way to keep your visitors on your site and keep them returning.





Print this article    Tell a friend
Post New Comment

This site does not allow anonymous comments. Registered members can login to participate. Registration is free and takes only a few seconds