I came across a problem today with phpFlickr 3.1 and the way it handles its database caching. I believe it has to do with commas in the serialized data that is being inserted into the cache table. After grabbing the cache result php gave me this error in the phpFlickr library:
Notice: unserialize(): Error at offset ... phpFlickr.php
To fix this error you need to base64 encode and decode the data going into the database.
in phpFlickr modify line 144 to decode the response:
line 177 on cache row update:
$sql = "UPDATE " . $this->cache_table . " SET response = '" . str_replace("'", "''", base64_encode($response)) . "', expiration = '" . strftime("%Y-%m-%d %H:%M:%S") . "' WHERE request = '" . $reqhash . "'";
line 180 on cache row insert:
$sql = "INSERT INTO " . $this->cache_table . " (request, response, expiration) VALUES ('$reqhash', '" . str_replace("'", "''", base64_encode($response)) . "', '" . strftime("%Y-%m-%d %H:%M:%S") . "')";
Thanks to David Walsh for his php serialize tips:
2 thoughts on “phpFlickr 3.1 cache unserialize error”
Awesome, Awesome, Awesome tip! It worked like a charm! Thanks a lot Nick!
Thanks for the solution. It saved me lot of time.