3v4l.org

run code in 500+ PHP versions simultaneously
<?php error_reporting(E_ALL); $db = new PDO("sqlite::memory:"); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $expectedFetchMode = \PDO::FETCH_OBJ; $db->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, $expectedFetchMode); print "Original (expected):\n"; $stmt = $db->query("SELECT 'v1' AS c1, 'v2' AS c2"); print_r($stmt->fetch()); print "\nPDOStatement::setFetchMode:\n"; $stmt = $db->query("SELECT 'v1' AS c1, 'v2' AS c2"); $stmt->setFetchMode(\PDO::FETCH_DEFAULT); print_r($stmt->fetch()); print "\nPDOStatement::fetch:\n"; $stmt = $db->query("SELECT 'v1' AS c1, 'v2' AS c2"); print_r($stmt->fetch(\PDO::FETCH_DEFAULT)); print "\nPDOStatement::fetchAll:\n"; $stmt = $db->query("SELECT 'v1' AS c1, 'v2' AS c2"); print_r($stmt->fetchAll(\PDO::FETCH_DEFAULT)); print "\nPDO::setAttribute:\n"; try { $db->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_DEFAULT); } catch (ValueError $e) { print "Could not set fetch mode using PDO::setAttribute: ". $e->getMessage() ."\n"; } if ($db->getAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE) !== $expectedFetchMode) { print __LINE__ ." Fetch mode changed\n"; } print "Done!\n";
Output for 8.1.34, 8.2.0 - 8.2.34, 8.3.0 - 8.3.35, 8.4.1 - 8.4.25
Original (expected): stdClass Object ( [c1] => v1 [c2] => v2 ) PDOStatement::setFetchMode: Array ( [c1] => v1 [0] => v1 [c2] => v2 [1] => v2 ) PDOStatement::fetch: stdClass Object ( [c1] => v1 [c2] => v2 ) PDOStatement::fetchAll: Array ( [0] => stdClass Object ( [c1] => v1 [c2] => v2 ) ) PDO::setAttribute: Could not set fetch mode using PDO::setAttribute: Fetch mode must be a bitmask of PDO::FETCH_* constants Done!
Output for 8.5.0 - 8.5.10
Original (expected): stdClass Object ( [c1] => v1 [c2] => v2 ) PDOStatement::setFetchMode: Fatal error: Uncaught ValueError: PDOStatement::fetch(): Argument #1 ($mode) must be a bitmask of PDO::FETCH_* constants in /in/1sLR3H:16 Stack trace: #0 /in/1sLR3H(16): PDOStatement->fetch() #1 {main} thrown in /in/1sLR3H on line 16
Process exited with code 255.
Output for 8.4.26
Original (expected): stdClass Object ( [c1] => v1 [c2] => v2 ) PDOStatement::setFetchMode: stdClass Object ( [c1] => v1 [c2] => v2 ) PDOStatement::fetch: stdClass Object ( [c1] => v1 [c2] => v2 ) PDOStatement::fetchAll: Array ( [0] => stdClass Object ( [c1] => v1 [c2] => v2 ) ) PDO::setAttribute: Could not set fetch mode using PDO::setAttribute: Fetch mode must be a bitmask of PDO::FETCH_* constants Done!
Output for 8.5.11
Original (expected): stdClass Object ( [c1] => v1 [c2] => v2 ) PDOStatement::setFetchMode: stdClass Object ( [c1] => v1 [c2] => v2 ) PDOStatement::fetch: stdClass Object ( [c1] => v1 [c2] => v2 ) PDOStatement::fetchAll: Array ( [0] => stdClass Object ( [c1] => v1 [c2] => v2 ) ) PDO::setAttribute: Could not set fetch mode using PDO::setAttribute: PDO::setAttribute(): Argument #2 ($value) Fetch mode must be a bitmask of PDO::FETCH_* constants Done!

preferences:
34.82 ms | 1148 KiB | 11 Q