Skip to content

php_ref_mysqli

MySQLi 代表 MySQL Improved(改进的 MySQL)。它是一个 PHP 扩展,旨在利用 MySQL 4.1.3 及更高版本中的功能。它提供了从 PHP 与 MySQL 数据库交互的接口。

MySQLi 提供了面向过程接口(类似于较旧的、已废弃的 mysql_* 函数)和面向对象接口。面向对象方法通常更受现代 PHP 开发的青睐。

主要功能包括支持预处理语句 (prepared statements)、事务 (transactions)、多语句 (multiple statements) 和增强的调试功能。

PDO (PHP Data Objects) 是另一个流行的数据库访问扩展,它提供了跨不同数据库系统的统一接口。选择 MySQLi 还是 PDO 取决于项目需求(MySQLi 专门用于 MySQL/MariaDB,而 PDO 更具可移植性)。

MySQLi 扩展通常在大多数现代 PHP 安装中默认包含并启用,尤其是在使用 MySQL Native Driver (mysqlnd) 编译时。mysqlnd 是推荐的库,因为它比旧的 libmysqlclient 提供更好的性能和功能。

你可以通过检查 phpinfo() 输出或使用 extension_loaded('mysqli') 来验证是否启用了 MySQLi。

有关详细的安装和配置选项(例如,特定的 socket 路径、默认端口),请参阅官方 PHP 手册:

安装:https://www.php.net/manual/en/mysqli.installation.php

运行时配置:https://www.php.net/manual/en/mysqli.configuration.php

以下是面向过程接口中常用函数的列表。大多数函数都有面向对象的等价形式(例如,mysqli_connect() vs $mysqli->connect())。

函数描述
mysqli_affected_rows()返回上一个 INSERT、UPDATE、REPLACE 或 DELETE 查询影响的行数。
mysqli_autocommit()开启或关闭数据库修改的自动提交。
mysqli_change_user()更改指定数据库连接的用户。
mysqli_character_set_name()返回数据库连接的默认字符集名称。
mysqli_close()关闭先前打开的数据库连接。
mysqli_commit()提交当前事务。
mysqli_connect_errno()返回上次连接尝试的错误代码。
mysqli_connect_error()返回上次连接错误的字符串描述。
mysqli_connect()打开与 MySQL 服务器的新连接。
mysqli_data_seek()将结果指针调整到结果集中的任意一行。
mysqli_debug()执行调试操作(需要特殊编译的 PHP 版本)。
mysqli_dump_debug_info()将调试信息转储到日志中。
mysqli_errno()返回最近一次函数调用的错误代码。
mysqli_error_list()返回执行的最后一个命令的错误列表。
mysqli_error()返回上次错误的字符串描述。
mysqli_fetch_all()将所有结果行作为数组获取(需要 mysqlnd)。
mysqli_fetch_array()将结果行作为关联数组、数值数组或两者获取。
mysqli_fetch_assoc()将结果行作为关联数组获取。
mysqli_fetch_field_direct()通过偏移量获取单个字段的元数据。
mysqli_fetch_field()将结果集中的下一个字段作为对象返回。
mysqli_fetch_fields()返回表示结果集中字段的对象数组。
mysqli_fetch_lengths()返回结果集中当前行的列长度。
mysqli_fetch_object()将结果集的当前行作为对象返回。
mysqli_fetch_row()从结果集中获取一行数据,并将其作为枚举数组返回。
mysqli_field_count()返回最近一次查询的列数。
mysqli_field_seek()将字段游标设置为给定的字段偏移量。
mysqli_field_tell()返回字段游标的位置。
mysqli_free_result()释放与结果集关联的内存。
mysqli_get_charset()返回一个字符集对象。
mysqli_get_client_info()以字符串形式返回 MySQL 客户端库版本。
mysqli_get_client_stats()返回客户端按进程统计信息(需要 mysqlnd)。
mysqli_get_client_version()以整数形式返回 MySQL 客户端库版本。
mysqli_get_connection_stats()返回客户端连接统计信息(需要 mysqlnd)。
mysqli_get_host_info()返回描述连接的字符串。
mysqli_get_proto_info()返回连接使用的 MySQL 协议版本。
mysqli_get_server_info()返回 MySQL 服务器版本。
mysqli_get_server_version()以整数形式返回 MySQL 服务器版本。
mysqli_info()检索关于最近执行的查询的信息。
mysqli_init()初始化 MySQLi 并返回一个对象,用于与 mysqli_real_connect() 一起使用。
mysqli_insert_id()返回上次查询中使用的自动生成 ID。
mysqli_kill()请求服务器终止一个 MySQL 线程。
mysqli_more_results()检查多查询中是否有更多结果集。
mysqli_multi_query()在数据库上执行一个或多个查询。
mysqli_next_result()准备 mysqli_multi_query() 中的下一个结果集。
mysqli_num_fields()返回结果集中的字段数。
mysqli_num_rows()返回结果集中的行数。
mysqli_options()设置连接选项(如 MYSQLI_OPT_CONNECT_TIMEOUT)。
mysqli_ping()ping 服务器连接,或在连接中断时尝试重新连接。
mysqli_prepare()准备要执行的 SQL 语句(用于预处理语句)。
mysqli_query()对数据库执行查询。
mysqli_real_connect()打开到 MySQL 服务器的连接(通常在 mysqli_init() 之后使用)。
mysqli_real_escape_string()转义字符串中的特殊字符以用于 SQL 语句(请改用预处理语句!)。
mysqli_real_query()执行 SQL 查询。
mysqli_reap_async_query()返回异步查询的结果(需要 mysqlnd)。
mysqli_refresh()刷新表或缓存,或重置复制服务器信息。
mysqli_rollback()回滚当前事务。
mysqli_select_db()选择用于数据库查询的默认数据库(已废弃;在连接时指定或使用对象属性)。
mysqli_set_charset()设置默认的客户端字符集。
mysqli_set_local_infile_default()取消对 LOAD DATA LOCAL INFILE 的用户定义处理程序。
mysqli_set_local_infile_handler()为 LOAD DATA LOCAL INFILE 命令设置回调函数。
mysqli_sqlstate()返回最近一次 MySQL 操作的 SQLSTATE 错误代码。
mysqli_ssl_set()用于使用 SSL 建立安全连接。
mysqli_stat()返回当前系统状态。
mysqli_stmt_init()初始化一个语句并返回一个对象,用于与 mysqli_stmt_prepare() 一起使用。
mysqli_store_result()从上次查询中传输结果集。
mysqli_thread_id()返回当前连接的线程 ID。
mysqli_thread_safe()返回客户端库是否编译为线程安全的。
mysqli_use_result()启动结果集检索而不将其存储在本地(慎用)。
mysqli_warning_count()返回上次查询的警告数。

请参考官方 PHP 文档,以获取最全面、最新的信息、参数详情、返回值以及每个函数及其面向对象对应形式的示例:

https://www.php.net/manual/en/ref.mysqli.php