catfan / Medoo

The lightweight PHP database framework to accelerate the development.
https://medoo.in
MIT License
4.83k stars 1.15k forks source link

Unknown PDO attribute ATTR_CONNECTION_STATUS #1049

Closed ehv1 closed 2 years ago

ehv1 commented 2 years ago

Information

When using: print_r($database->info()); I get the following error:

PHP Fatal error:  Uncaught PDOException: SQLSTATE[IMSSP]: An invalid attribute was designated on the PDO object. in /work/sqlserv/vendor/catfan/medoo/src/Medoo.php:2226
Stack trace:
#0 /work/sqlserv/vendor/catfan/medoo/src/Medoo.php(2226): PDO->getAttribute()
#1 /work/sqlserv/test.php(42): Medoo\Medoo->info()
#2 {main}
  thrown in /work/sqlserv/vendor/catfan/medoo/src/Medoo.php on line 2226

According to the information printed on this page: https://docs.microsoft.com/en-us/sql/connect/php/pdo-getattribute?view=sql-server-ver15 there is no PDO::ATTR_CONNECTION_STATUS.

When I comment out ATTR_CONNECTION_STATUS then it's working:

     /**
      * Get information about the database connection.
      *
      * @codeCoverageIgnore
      * @return array
      */
     public function info(): array
     {
         $output = [
             'server' => 'SERVER_INFO',
             'driver' => 'DRIVER_NAME',
             'client' => 'CLIENT_VERSION',
             'version' => 'SERVER_VERSION',
             //'connection' => 'CONNECTION_STATUS'
         ];

         foreach ($output as $key => $value) {
             $output[$key] = @$this->pdo->getAttribute(constant('PDO::ATTR_' . $value)); // Line 2226 ...
         }

         $output['dsn'] = $this->dsn;

         return $output;
     }
print_r($database->info());

Array
(
    [server] => Array
        (
            [CurrentDatabase] => Datawarehouse
            [SQLServerVersion] => 15.00.2080
            [SQLServerName] => DATAWAREHOUSE
        )

    [driver] => sqlsrv
    [client] => Array
        (
            [DriverName] => libmsodbcsql-18.0.so.1.1
            [DriverODBCVer] => 03.52
            [DriverVer] => 18.00.0001
            [ExtensionVer] => 5.10.1+15713
        )

    [version] => 15.00.2080
    [dsn] => sqlsrv:Server=172.16.24.1;Database=Datawarehouse;Encrypt=0
)
catfan commented 2 years ago

It seems the @ error control operator has been deprecated on PHP 8.0.

I will fix it.