mattbit/mysql-compat
对旧的 mysql_* 函数与 PDO 的向后兼容性
v1.1.1
2019-07-01 12:46 UTC
Requires
- php: >=5.6
- ext-pdo: *
Requires (Dev)
- phpspec/phpspec: ^2.5
- phpunit/phpunit: ^5.3
README
此库尝试提供与已废弃的 mysql_* 函数的向后兼容性。
注意事项
除非绝对必要,您真的不应该使用它:最好重构现有代码以直接使用 PDO 和预处理语句或 ORM,如 Eloquent。
尽管库提供了对 mysql_real_escape_string 的 Hackish 替代品,但您应该重构代码以使用预处理语句。
要求
需要 PHP >= 5.6 以及 PDO 驱动(支持 PHP 7)。
安装
您可以通过 composer 安装 mysql-compat。
composer require mattbit/mysql-compat
用法
通过外观类 Mattbit\MysqlCompat\Mysql 提供与 mysql_-等效的函数。
require __DIR__ . '/vendor/autoload.php'; use Mattbit\MysqlCompat\Mysql; Mysql::connect('host', 'user', 'password'); Mysql::selectDb('my_db'); $result = Mysql::query('SELECT * FROM my_table'); $row = Mysql::fetchArray($result);
请注意,静态方法的命名方式与原始函数的驼峰式版本相同,例如,mysql_fetch_array 变为 Mysql::fetchArray。
如果您使用的是 PHP7 并想在不修改现有代码的情况下重新定义旧的全球函数和常量,可以使用 Mysql::defineGlobals 方法
require __DIR__ . '/vendor/autoload.php'; Mattbit\MysqlCompat\Mysql::defineGlobals(); mysql_connect('host', 'user', 'password'); mysql_select_db('my_db'); $result = mysql_query('SELECT * FROM my_table'); $row = mysql_fetch_array($result, MYSQL_BOTH);
如果您需要对连接有更多控制,数据库管理器允许您访问底层对象。
require __DIR__ . '/vendor/autoload.php'; use Mattbit\MysqlCompat\Mysql; $manager = Mysql::getManager(); // Create a connection by specifying a custom DSN. $connection = $manager->connect('mysql:dbname=mydatabase;host=myhost', 'user', 'pass'); // You can access the underlying PDO object $pdo = $connection->getPdo(); // The rest of the code will use the last connection registered in the manager $res = Mysql::query('SELECT * FROM my_table'); // But you can specify explicitly a connection as well $res = Mysql::query('SELECT * FROM my_table', $connection);
如果您需要自定义连接的 DSN(例如,指定字符集),这特别有用
$manager = Mysql::getManager(); $manager->connect('mysql:dbname=database;host=hostname;charset=customCharset', 'user', 'password'); // This will automatically use the connection above, with the right charset. $res = Mysql::query('SELECT * FROM my_table');
待办事项
-
mysql_affected_rows -
mysql_client_encoding -
mysql_close -
mysql_connect -
mysql_create_db -
mysql_data_seek(不支持) -
mysql_db_name -
mysql_db_query -
mysql_drop_db -
mysql_errno -
mysql_error -
mysql_escape_string -
mysql_fetch_array -
mysql_fetch_assoc -
mysql_fetch_field -
mysql_fetch_lengths -
mysql_fetch_object -
mysql_fetch_row -
mysql_field_flags -
mysql_field_len -
mysql_field_name -
mysql_field_seek -
mysql_field_table -
mysql_field_type -
mysql_free_result -
mysql_get_client_info -
mysql_get_host_info -
mysql_get_proto_info -
mysql_get_server_info -
mysql_info -
mysql_insert_id -
mysql_list_dbs -
mysql_list_fields -
mysql_list_processes -
mysql_list_tables -
mysql_num_fields -
mysql_num_rows -
mysql_pconnect -
mysql_ping -
mysql_query -
mysql_real_escape_string -
mysql_result -
mysql_select_db -
mysql_set_charset(有关信息,请参阅 问题 #7) -
mysql_stat -
mysql_tablename -
mysql_thread_id -
mysql_unbuffered_query