mattbit/mysql-compat

对旧的 mysql_* 函数与 PDO 的向后兼容性

v1.1.1 2019-07-01 12:46 UTC

This package is auto-updated.

Last update: 2024-08-29 03:31:30 UTC


README

Build Status Scrutinizer Code Quality SensioLabsInsight

此库尝试提供与已废弃的 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