Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Serialize (PHP)

Posted on 2009-05-12
6
Medium Priority
?
280 Views
Last Modified: 2013-12-12
Following up from Webvogel's excellent advice, I'm now trying to retrieve serialized() data from a MySQL database. The data is being sent to the database row as "a:1:{i:0;s:25:"CompanyName field changed";}" which is great, as I know it works. The problem therein, however, is pulling it back to unserialize it.

Even if I do a simple <?php echo unserialize($row2['Adjustment']); ?> it returns a blank value. Yet, doing an echo $row2['Adjustment'] returns the serialized stuff mentioned above. For everything else, it returns "Array".

I'll attach the code I'm using. Any help would, as always, be much appreciated. I expect I'm doing something really quite simple (as usual). Thanks.
/* snippet */
/* the <div> is basically a mouseover tooltip that is meant to display the unserialized data from the database....hence why I called the variable $tooltip....  ;)  */
 
<?php do { ?>
 
<?php if ($row2['Adjustment'] == "emailed") { echo "emailed"; } else if ($row2['Adjustment'] == "printed") { echo "printed"; } else if ($row2['Adjustment'] == "bookmarked") { echo "bookmarked"; } else if ($row2['LatestModification'] <> "") { echo "<div onMouseover=\"ddrivetip('".$tooltip."', 250)\"; onMouseout=\"hideddrivetip()\">modified</div>"; } ?></td>
<?php } while ($row2 = mysql_fetch_assoc($sql2));
					$tooltip = unserialize($row2['Adjustment']);  # <-- !!!!!! this here !!!!!!!
					$rows = mysql_num_rows($sql2);
					if($rows > 0) {
						mysql_data_seek($sql, 0);
							$row2 = mysql_fetch_assoc($sql2);
					}
			?>
 
<?php } ?>
 
 
 
 
/* and just in case you need to know the Array....here it is. Thanks again for this Webvogel! */
 
<?php 
 
foreach($row as $key => $val){
        if ($row[$key] != $_POST[$map[$key]]){
                $change[] = $key.' field changed';
        }
}
 
$adjustment = serialize($change);
 
?>

Open in new window

0
Comment
Question by:BenthamLtd
  • 3
  • 2
6 Comments
 
LVL 34

Expert Comment

by:Beverley Portlock
ID: 24364635
You have a ; at the end of your while loop. Remove it.
0
 
LVL 34

Accepted Solution

by:
Beverley Portlock earned 750 total points
ID: 24364671
Just to explain - that semicolon forms an empty statement and the while loop executes that statement before moving to the next statement. The interpreter sees it as

while ($row2 = mysql_fetch_assoc($sql2))
     ;

$tooltip = unserialize($row2['Adjustment']);  # <-- !!!!!! this here !!!!!!!
$rows = mysql_num_rows($sql2);
if($rows > 0) {
              mysql_data_seek($sql, 0);
               $row2 = mysql_fetch_assoc($sql2);
}
 
0
 

Author Comment

by:BenthamLtd
ID: 24364758
Parse error: syntax error, unexpected T_VARIABLE, expecting ';' on line 1204


The while loop was working anyway. Any other ideas?
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 34

Expert Comment

by:Beverley Portlock
ID: 24364816
I am not clear whether you are trying to achieve this


while ($row2 = mysql_fetch_assoc($sql2))
     $tooltip = unserialize($row2['Adjustment']);  # <-- !!!!!! this here !!!!!!!


$rows = mysql_num_rows($sql2);

if($rows > 0) {
     mysql_data_seek($sql, 0);
     $row2 = mysql_fetch_assoc($sql2);
}


or this



while ($row2 = mysql_fetch_assoc($sql2)) {
     $tooltip = unserialize($row2['Adjustment']);  # <-- !!!!!! this here !!!!!!!


     $rows = mysql_num_rows($sql2);

     if($rows > 0) {
          mysql_data_seek($sql, 0);
          $row2 = mysql_fetch_assoc($sql2);
     }

}
0
 

Assisted Solution

by:switch7
switch7 earned 750 total points
ID: 24382904
What if you try:
<?php print_r( unserialize($row2['Adjustment']) ); ?>

?
0
 

Author Comment

by:BenthamLtd
ID: 24382930
Whoops sorry, I forgot to update this post. We've solved it now but thank you for all your help guys. Seems we didn't need to use serialize after all. Just implode.

Happy to give a throw a few points around for the useful comments.
<?php
 
// GET VALUES FROM DATABASE TABLE. STORE THEM INTO ARRAY. //
 
$query0 = "SELECT Status, ActioneeID, TypeID, Sales_Ledger_No, ProblemsClass, CompanyName, InvoiceDate, ContactName, AccountManager, Postcode, OrderConfirmedByID, Email, Phone, GoodsToBeReturned_1, GoodsToBeReturned_1_qty, GoodsToBeReturned_2, GoodsToBeReturned_2_qty, GoodsToBeReturned_3, GoodsToBeReturned_3_qty, GoodsToBeReturned_4, GoodsToBeReturned_4_qty, GoodsToBeReturned_5, GoodsToBeReturned_5_qty, GoodsToBeReturned_6, GoodsToBeReturned_6_qty, GoodsToBeReturned_7, GoodsToBeReturned_7_qty, GoodsToBeReturned_8, GoodsToBeReturned_8_qty, GoodsToBeReturned_9, GoodsToBeReturned_9_qty, GoodsToBeReturned_10, GoodsToBeReturned_10_qty, GoodsToBeReturned_11, GoodsToBeReturned_11_qty, GoodsToBeReturned_12, GoodsToBeReturned_12_qty from vedit_sheet WHERE Sheet_No='$sheet'";
$sql0 = mysql_query($query0) or die(mysql_error());
$row0 = mysql_fetch_assoc($sql0);
$rows0 = mysql_num_rows($sql0);
 
# FORMAT: a<form> = hidden form for array lookup (drop down boxes). f<form> = original form name from sheet (text fields).
$map = array('Status' => 'aStatus', 'Actionee' => 'aActionee', 'Type' => 'aType', 'Sales_Ledger_No' => 'fSalesRef', 'ProblemsClass' => 'aProblems', 'CompanyName' => 'fCompany', 'InvoiceDate' => 'fInvoice', 'ContactName' => 'fContact', 'AccountManager' => 'aAccountMan', 'Postcode' => 'fPostcode', 'OrderConfirmedByID' => 'fConfirmedBy', 'Email' => 'fEmail', 'Phone' => 'fPhone');  // map array: name of database field = name of form field
 
foreach($row0 as $key => $val){
        if ($row0[$key] != $_POST[$map[$key]]){
                $array[] = $key.' field changed from '.$val.' ' ;
       	    }
}
 
$comma_sep = implode("<br>",$array);
 
$update_sheet_history = "INSERT INTO sheet_history (Sheet_No, UserID, LatestModification, Adjustment) VALUES ('$sheet', '$_SESSION[userID]', now(), '$comma_sep') "; 

Open in new window

0

Featured Post

Ask an Anonymous Question!

Don't feel intimidated by what you don't know. Ask your question anonymously. It's easy! Learn more and upgrade.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Password hashing is better than message digests or encryption, and you should be using it instead of message digests or encryption.  Find out why and how in this article, which supplements the original article on PHP Client Registration, Login, Logo…
Since pre-biblical times, humans have sought ways to keep secrets, and share the secrets selectively.  This article explores the ways PHP can be used to hide and encrypt information.
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
The viewer will learn how to create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …
Suggested Courses

926 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question