Power Directory provides a large number of articles and Web site links for browsing and searching on the Internet.Tuesday December 2nd, 2008

Power Directory / Serialize this - Saving Objects in PHP
Home  Latest Links Articles Contact Us
 
 
 
Site Tools

Free Downloads

Articles


Articles  


Serialize this - Saving Objects in PHP

By: Kevin Davies



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.


Article Source: http://www.powerdirectory.net/articles/article87408.html





Related Articles

"Three Steps For Success" - Larry Johnson
Rules To Problem Solving - Richard Lowe
Free & Public articles, save the time of writing your own ones! - Aleksi Ursin
www.DynamicWork.com - Michele Graziano
Your Country Needs You - malcolm james pugh
The Reality of Successful Web Site Today - Alan Wasser
Does Google Hire "Mad Scientists?" - Jim Edwards
Google Adsense Alternative - Ratliff J
The Complete Webmasters Toolkit - 2005 Edition - John Socratous & Reneldy Senat
How-To Fail Miserably in Business on the Net - in Seven Easy Lessons Starting Today! - Pamela Heywood