dshafik / php7-mysql-shim
A PHP 7 shim for ext/mysql
Installs: 720 687
Dependents: 4
Suggesters: 0
Security: 0
Stars: 392
Watchers: 15
Forks: 99
Open Issues: 9
pkg:composer/dshafik/php7-mysql-shim
Requires
- php: >=5.3.6
- ext-mysqli: *
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- squizlabs/php_codesniffer: ^3.5
- yoast/phpunit-polyfills: ^0.2.0
- dev-master
- 1.0.0beta4
- 1.0.0beta3
- 1.0.0beta2
- 1.0.0beta1
- 0.2.0
- 0.1.0
- dev-dependabot/composer/friendsofphp/php-cs-fixer-3.15.0
- dev-dependabot/composer/squizlabs/php_codesniffer-3.7.2
- dev-dependabot/composer/yoast/phpunit-polyfills-1.0.4
- dev-code-quality
- dev-fake-pr
- dev-github-actions
- dev-pr/bpolaszek/49
- dev-fixup-tests
- dev-travis-matrix
- dev-old-php-support
This package is auto-updated.
Last update: 2025-10-05 02:53:23 UTC
README
PHP 7 Shim for ext/mysql
This library attempts to create a drop-in replacement for ext/mysql on PHP 7 using mysqli.
For the most part, it should just work.
Why You Shouldn't Use This Library
This library is meant to be a stop-gap. It will be slower than using the native functions directly.
You should switch to ext/pdo_mysql or ext/mysqli, and migrate to prepared queries to ensure you are securely interacting with your database.
Installation
To install, either add dshafik/php7-mysql-shim to your composer.json:
$ composer require dshafik/php7-mysql-shim
or, clone/download this repo, and include lib/mysql.php in your project.
Usage
When installed with composer, the library is included automatically.
Once the lib/mysql.php file is included, it will create mysql_* functions if they don't already exist. You may safely include the file in a PHP 5.3.6+ project, it will do nothing if the mysql extension is already available.
Caveats
- Calls to
is_resource()andget_resource_type()on MySQL connections and results will fail as these are now theirmysqliequivalents. - Some errors are now from
ext/mysqli, and others areE_USER_WARNINGinstead ofE_WARNING. - You must use the
mysqli.*INI entries instead ofmysql.*(e.g.mysqli.default_userinstead ofmysql.default_user) - If no host, username, password parameter is provided when using the
mysql_*functions, the default values from the correspondingmysqli.*settings fromphp.inifile will be used (e.g.mysqli.default_host,mysqli.default_user,mysqli.default_pw)
Alternatives
Instead of using this drop-in-replacement library you should consider refactoring your code from mysql to e.g. mysqli. This process can be automated with e.g. https://stackoverflow.com/a/61597957