PDO::FETCH_SERIALIZE is deprecated
PHP 8.1 deprecates the
Serializable interface, and part of this change, PHP 8.1 also deprecates the
PDO::FETCH_SERIALIZE flag is meant to be used as a flag for PDO statement fetch methods, and if was used, PDO automatically calls
unserialize on the data fetched from the database. This functionality, however, is broken and is unusable.
In PHP 8.1 and later, attempting to make use of
PDO::FETCH_SERIALIZE emits a deprecation notice:
$stmt = $pdo->query('SELECT \'s:4:"test";\' foo'); $stmt->setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_SERIALIZE, 'Foo'); $data = $stmt->fetch()
Deprecated: PDOStatement::fetch(): The PDO::FETCH_SERIALIZE mode is deprecated in ... on line ...
PDO::FETCH_SERIALIZE PHP constant does not emit a deprecation notice.
Avoiding the deprecation notice
To avoid the deprecation notice, drop the
PDO::FETCH_SERIALIZE flag, and make an explicit
unserialize call on the string values fetched from the database.
Backwards Compatibility Impact
PDO::FETCH_SERIALIZE mode is deprecated in PHP 8.1, and will be removed in PHP 9.0. Note that this functionality was buggy even prior to PHP 8.1, and it may be ideal to replace the
PDO::FETCH_SERIALIZE mode with an explicit