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