Provides user-land PHP polyfills for the MySQL subclass provided by PHP 8.4.
Supports PHP 8.1, 8.2, and 8.3. On PHP 8.4 and later, this polyfill is not necessary. Requires pdo_mysql extension compiled with mysqlnd (which is the default and common approach).
It is possible and safe to require this polyfill on PHP 8.4 and later. This polyfill class is autoloadable; on PHP 8.4 and later, PHP will not autoload this polyfill because it's declared natively.
For more information, see PdoMysql on PHP 8.4: PDO Driver-specific sub-classes: MySQL
composer require polyfills/pdo-mysql-subclassUse the provided PdoMysql class to replace PDO MySQL connections.
$mysqlConnection = new PdoMysql(
'mysql:host=localhost;dbname=phpwatch;charset=utf8mb4;port=33066',
'<username>',
'<password>',
);$mysqlConnection = PdoMysql::connect(
'mysql:host=localhost;dbname=phpwatch;charset=utf8mb4;port=33066',
'<username>',
'<password>',
);This polyfill adds class-constants to PdoMysql class to match all of the PDO::MYSQL_ constants. For example, PDO::MYSQL_ATTR_SSL_CERT is identical to PdoMysql::ATTR_SSL_CERT.
PDO::connect: This method cannot be polyfilled because it's an existing PHP class that user-land PHP classes cannot modify.PdoMysql::getWarningCount: This method is not implemented in the polfyill.
Contributions are welcome either as a GitHub issue or a PR to this repo.