Can't unserialize array from mysql
| From: | Jim Doolittle | Date: | Mon, 03 Dec 2001 16:07:09 +0000 |
| Subject: | Can't unserialize array from mysql | ||
| Groups: | php.db | ||
| Request: | Send a blank email to php-db+get-14764@lists.php.net to get a copy of this message | ||
Hi,
I'm trying to loop thru an unserialized array pulled from mysql. First I
serialized the array before storing it:
------------------------------------------------------------------------
$sql ="UPDATE $table_name set performer_id='" . addslashes(serialize($perfor
mer_id)) . "' WHERE lineup_id=$lineup_id";
------------------------------------------------------------------------
This seems to work. mysql stores $performer_id as:
a:3:{i:0;s:2:"12";i:1;s:1:"1";i:2;s:1:"3";}
The next time I grab $performer_id from mysql I want to unserialize it and
loop thru it with foreach():
------------------------------------------------------------------------
$sql ="SELECT performer_id FROM lineup WHERE lineup_id=$lineup_id";
$result_pid = @mysql_query($sql, $connection) or die("Couldn't execute query
perfomer ID.");
while ($row = mysql_fetch_row($result_pid)) {
$result_pid = unserialize($result_pid);
foreach ($result_pid as $performer_id) {
(some more code here)
}
------------------------------------------------------------------------
But this gives me an error "Warning: Invalid argument supplied for
foreach()". I used var_dump before and after I unserialized just to check
that the result set actually contained data.
The first var_dump produced "array(1) { [0]=> string(44)
"a:3:{i:0;s:2:"10";i:1;s:1:"6";i:2;s:2:"17";}" }".
Looks good, but var_dump
after unserializing gives "bool(false)".
I also tried using reset() after the first var_dump, and stripslashes(), but
got the same error. Can anyone see what I'm doing wrong? Thanks!
Jim