--TEST-- PDO_DBLIB: Uniqueidentifier column data type stringifying --EXTENSIONS-- pdo_dblib --SKIPIF-- getAttribute(PDO::DBLIB_ATTR_TDS_VERSION), ['4.2', '4.6'])) die('skip feature unsupported by this TDS version'); ?> --FILE-- setAttribute(PDO::DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER, true); var_dump(true === $db->getAttribute(PDO::DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER)); $db->setAttribute(PDO::DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER, false); var_dump(false === $db->getAttribute(PDO::DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER)); //-------------------------------------------------------------------------------- // 2. Binary //-------------------------------------------------------------------------------- $stmt = $db->query($sql); $row = $stmt->fetch(PDO::FETCH_ASSOC); var_dump($row['guid'] === $testGUIDBinary); //-------------------------------------------------------------------------------- // 3. PDO::ATTR_STRINGIFY_FETCHES must not affect `uniqueidentifier` representation //-------------------------------------------------------------------------------- $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true); $stmt = $db->query($sql); $row = $stmt->fetch(PDO::FETCH_ASSOC); $db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false); var_dump($row['guid'] === $testGUIDBinary); //-------------------------------------------------------------------------------- // 4. Stringifying // ! With TDS protocol version <7.0 binary will be returned and the test will fail ! // TODO: something from PDO::ATTR_SERVER_VERSION, PDO::ATTR_CLIENT_VERSION or PDO::ATTR_SERVER_INFO should be used // to get TDS version and skip this test in this case. //-------------------------------------------------------------------------------- $db->setAttribute(PDO::DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER, true); $stmt = $db->query($sql); $row = $stmt->fetch(PDO::FETCH_ASSOC); var_dump($row['guid'] === $testGUID); var_dump($row['guid']); ?> --EXPECT-- bool(true) bool(true) bool(true) bool(true) bool(true) string(36) "82A88958-672B-4C22-842F-216E2B88E72A"