MySQLi扩展允许您访问 MySQL数据库服务器。它设计用于与 MySQL 4.1及更高版本一起使用。

安装和运行时配置

MySQLi扩展是随 PHP版本 5.0.0引入的。 MySQL本机驱动程序包含在 PHP版本 5.3.0中。

有关安装详细信息,请访问: https://php.net/manual/en/mysqli.installation.php

有关运行时配置的详细信息,请访问:https://php.net/manual/en/mysqli.configuration.php

PHP mysqli类

类描述
mysqlimysqli类
方法/属性描述
__construct()打开到MySQL服务器的新连接
$affected_rows获取先前MySQL操作中受影响的行数
autocommit()打开或关闭自动提交数据库修改
begin_transaction()启动事务
change_user()更改指定数据库连接的用户
character_set_name()返回数据库连接的当前字符集
close()关闭以前打开的数据库连接
$client_info获取MySQL客户端信息
$client_version以整数形式返回MySQL客户端版本
commit()提交当前事务
$connect_errno返回上次连接调用的错误代码
$connect_error返回上一个连接错误的描述
debug()执行调试操作
dump_debug _info()将调试信息转储到日志中
$errno返回最近函数调用的错误代码
$error_list返回上次执行的命令中的错误列表
$error返回上一个错误的字符串描述
$field_count返回最近查询的列数
get_charset()返回字符集对象
get_connection_stats()返回有关客户端连接的统计信息
get_warnings()获取显示警告的结果
$host_info返回表示所用连接类型的字符串
$info检索有关最近执行的查询的信息
init()初始化MySQLi并返回一个与MySQLi_real_connect()一起使用的对象
$insert_id返回上次查询为AUTO_INCREMENT列生成的值
kill()要求服务器终止MySQL线程
options()设置选项
ping()ping服务器连接,或者在连接断开时尝试重新连接
poll()轮询连接
$protocol_version返回使用的MySQL协议的版本
more_results()检查多重查询是否还有其他查询结果
multi_query()对数据库执行一个或多个查询
next_result()准备multi_query的下一个结果
prepare()准备SQL语句以供执行
query()对数据库执行查询
real_connect()打开到mysql服务器的连接
real_escape_string()考虑到连接的当前字符集,对字符串中的特殊字符进行转义,以便在SQL语句中使用
real_query()执行SQL查询
reap_async_query()从异步查询中获取结果
refresh()刷新
release_savepoint()从当前事务的存储点集中删除命名的存储点
rollback()回滚当前事务
savepoint()设置命名事务保存点
select_db()选择数据库查询的默认数据库
$server_info返回MySQL服务器的版本
$server_version以整数形式返回MySQL服务器的版本
set_charset()设置客户端字符集
$sqlstate返回上一次MySQL操作中的sqlstate错误
ssl_set()用于使用ssl建立安全连接
stat()获取当前系统状态
stmt_init()初始化一个语句并返回一个对象,以便与mysqli_stmt_prepare()一起使用
store_result()传输上一个查询的结果集
$thread_id返回当前连接的线程id
thread_safe()返回是否给定线程安全性
use_result()启动结果集检索
$warning_count返回给定链接的上次查询中的警告数

PHP mysqli_stmt类

类描述
mysqli_stmtmysqli_stmt类
方法/属性描述
__construct()构造一个新的mysqli_stmt对象
$affected_rows返回上次执行的语句更改、删除、插入或匹配的行总数
attr_get()用于获取语句属性的当前值
attr_set()用于修改准备好的语句的行为
bind_param()将变量作为参数绑定到准备好的语句中
bind_result()将变量绑定到准备好的语句以存储结果
close()关闭准备好的语句
data_seek()查找语句结果集中的任意行
$errno返回最近语句调用的错误代码
$error_list返回上次执行的语句中的错误列表
$error返回上一个语句错误的字符串描述
execute()执行准备好的语句
fetch()将准备好的语句中的结果提取到绑定变量中
$field_count返回给定语句中的列数
free_result()为给定的语句句柄释放存储的结果内存
get_result()从准备好的语句中获取结果集,作为mysqli_result对象
get_warnings()获取显示警告的结果
$insert_id获取上一次insert操作生成的id
more_results()检查多重查询是否有更多查询结果
next_result()从多重查询中读取下一个结果
$num_rows返回从服务器提取的行数
$param_count返回给定语句的参数数
prepare()准备SQL语句以供执行
reset()重置准备好的语句
result_metadata()从准备好的语句中返回结果集元数据
send_long_data()以块形式发送数据
$sqlstate返回上一语句操作中的sqlstate错误
store_result()将结果集存储在内部缓冲区中

PHP mysqli_result类

类描述
mysqli_resultmysqli_result类
方法/属性描述
$current_field获取结果指针的当前字段偏移量
data_seek()将结果指针调整到结果中的任意行
fetch_all()将所有结果行作为关联数组、数字数组或两者兼而有之
fetch_array()将结果集的下一行作为关联数组或数字数组,或两者兼而有之
fetch_assoc()将结果集的下一行提取为关联数组
fetch_column()从结果集的下一行中提取一列
fetch_field()返回结果集中的下一个字段
fetch_field_direct()为单个字段提取元数据
fetch_fields()返回表示结果集中字段的对象数组
fetch_object()获取结果集的下一行作为对象
fetch_row()将结果集的下一行提取为枚举数组
$field_count获取结果集中的字段数
field_seek()将结果指针设置为指定的字段偏移量
free()释放与结果相关的内存
$length返回结果集中当前行的列的长度
$num_rows获取结果集中的行数

PHP mysqli_driver类

类描述
mysqli_drivermysqli_driver类
方法/属性描述
embedded_server_end()停止嵌入式服务器
embedded_server_start()初始化并启动嵌入式服务器
$report_mode设置mysqli错误报告模式

PHP mysqli_warning类

描述
类描述
mysqli_warningmysqli_warning类
方法
next()获取下一个警告

PHP mysqli_sql_exception类

类描述
mysqli_sql_exceptionmysqli_sql_exception类

别名和不推荐使用的MySQLi函数

函数
MySQLi_connect()打开到MySQL服务器的新连接。mysqli::__construct()的别名
mysqli::escape_string()考虑连接的当前字符集,对字符串中的特殊字符进行转义,以便在SQL语句中使用。mysqli_real_escape_string()的别名
mysqli_get_links_stats()返回有关打开和缓存的链接的信息
mysqli_execute()执行准备好的语句。mysqli_stmt_execute()的别名
mysqli_get_client_stats()返回每个进程的客户端统计信息
mysqli_report()设置mysqli错误报告模式。mysqli_driver-notransRreport_mode的别名
mysqli::set_opt()设置选项。mysqli_options()的别名

PHP MySQLi预定义常量

下面的常量是由这个扩展定义的,只有当扩展被编译到PHP或在运行时动态加载时才可用。

常量描述
MYSQLI_READ_DEFAULT_GROUP从命名组中读取选项my.cnf 或使用 MYSQLI_READ_DEFAULT_FILE 指定的文件
MYSQLI_READ_DEFAULT_FILE从指定选项文件而不是 my.cnf 中读取选项
MYSQLI_OPT_CONNECT_TIMEOUT连接超时(以秒为单位)
MYSQLI_OPT_READ_TIMEOUT命令执行结果超时(以秒为单位)。从 PHP 7.2.0 开始可用。
MYSQLI_OPT_LOCAL_INFILE启用命令 LOAD LOCAL INFILE
MYSQLI_OPT_INT_AND_FLOAT_NATIVE将整数和浮点列转换回 PHP 数字。仅对 mysqlnd 有效。
MYSQLI_OPT_NET_CMD_BUFFER_SIZE内部命令/网络缓冲区的大小。仅对 mysqlnd 有效。
MYSQLI_OPT_NET_READ_BUFFER_SIZE读取 MySQL 命令包正文时的最大读取块大小(以字节为单位)。仅对 mysqlnd 有效。
MYSQLI_OPT_SSL_VERIFY_SERVER_CERT需要 MySQL 5.1.10 及更高版本
MYSQLI_INIT_COMMAND连接 MySQL 服务器时执行的命令。重新连接时会自动重新执行。
MYSQLI_CLIENT_SSL使用SSL(加密协议)。该选项不应由应用程序设置;它在 MySQL 客户端库内部设置
MYSQLI_CLIENT_COMPRESS使用压缩协议
MYSQLI_CLIENT_INTERACTIVE在关闭连接之前允许 interactive_timeout 秒(而不是 wait_timeout 秒)不活动。客户端的会话wait_timeout变量将设置为会话interactive_timeout变量的值。
MYSQLI_CLIENT_IGNORE_SPACE函数名称后允许有空格。将所有函数名称设为保留字。
MYSQLI_CLIENT_NO_SCHEMA不允许使用 db_name.tbl_name.col_name 语法。
MYSQLI_CLIENT_MULTI_QUERIES允许在单个 mysqli_query() 调用中进行多个分号分隔的查询。
MYSQLI_STORE_RESULT用于使用缓冲结果集
MYSQLI_USE_RESULT用于使用非缓冲结果集
MYSQLI_ASSOC列返回到以字段名作为数组索引的数组中。
MYSQLI_NUM列返回到具有枚举索引的数组中。
MYSQLI_BOTH列返回到具有数字索引和字段名称的数组中:关联索引。
MYSQLI_NOT_NULL_FLAG表示字段定义为NOT NULL
MYSQLI_PRI_KEY_FLAG字段是主索引的一部分
MYSQLI_UNIQUE_KEY_FLAG字段是唯一索引的一部分。
MYSQLI_MULTIPLE_KEY_FLAG字段是索引的一部分。
MYSQLI_BLOB_FLAG字段定义为 BLOB
MYSQLI_UNSIGNED_FLAG字段定义为 UNSIGNED
MYSQLI_ZEROFILL_FLAG字段定义为 ZEROFILL
MYSQLI_AUTO_INCRMENT_FLAG字段定义为 AUTO_INCRMENT
MYSQLI_TIMESTAMP_FLAG字段定义为 TIMESTAMP
MYSQLI_SET_FLAG字段定义为 SET
MYSQLI_NUM_FLAG字段定义为 NUMERIC
MYSQLI_PART_KEY_FLAG字段是多索引的一部分
MYSQLI_GROUP_FLAG字段是 GROUP BY 的一部分
MYSQLI_TYPE_DECIMAL字段定义为 DECIMAL
MYSQLI_TYPE_NEWDECIMAL精确数学 DECIMAL 或 NUMERIC 字段(MySQL 5.0.3 及更高版本)
MYSQLI_TYPE_BIT字段定义为 BIT(MySQL 5.0.3 及更高版本)
MYSQLI_TYPE_TINY字段定义为 TINYINT
MYSQLI_TYPE_SHORT字段定义为 SMALLINT
MYSQLI_TYPE_LONG字段定义为 INT
MYSQLI_TYPE_FLOAT字段定义为 FLOAT
MYSQLI_TYPE_DOUBLE字段为定义为 DOUBLE
MYSQLI_TYPE_NULL字段定义为 DEFAULT NULL
MYSQLI_TYPE_TIMESTAMP字段定义为 TIMESTAMP
MYSQLI_TYPE_LONGLONG字段定义为 BIGINT
MYSQLI_TYPE_INT24字段定义为 MEDIUMINT
MYSQLI_TYPE_DATE字段定义为 DATE
MYSQLI_TYPE_TIME字段定义为TIME
MYSQLI_TYPE_DATETIME字段定义为DATETIME
MYSQLI_TYPE_YEAR字段定义为 YEAR
MYSQLI_TYPE_NEWDATE字段定义为 DATE
MYSQLI_TYPE_INTERVAL字段定义为 INTERVAL
MYSQLI_TYPE_ENUM字段定义为ENUM
MYSQLI_TYPE_SET字段定义为SET
MYSQLI_TYPE_TINY_BLOB字段定义为 TINYBLOB
MYSQLI_TYPE_MEDIUM_BLOB字段定义为 MEDIUMBLOB
MYSQLI_TYPE_LONG_BLOB字段定义为 LONGBLOB
MYSQLI_TYPE_BLOB字段定义为 BLOB
MYSQLI_TYPE_VAR_STRING字段定义为 VARCHAR
MYSQLI_TYPE_STRING字段定义为 CHAR 或 BINARY
MYSQLI_TYPE_CHAR字段定义为 TINYINT。对于 CHAR,请参阅 MYSQLI_TYPE_STRING
MYSQLI_TYPE_GEOMETRY字段定义为 GEOMETRY
MYSQLI_TYPE_JSON字段定义为 JSON。仅对 mysqlnd 和 MySQL 5.7.8 及更高版本有效。
MYSQLI_NEED_DATA更多可用于绑定变量的数据
MYSQLI_NO_DATA没有更多数据可用于绑定变量
MYSQLI_DATA_TRUNCATED发生数据截断。从 MySQL 5.0.5 开始可用。
MYSQLI_ENUM_FLAG字段定义为 ENUM。
MYSQLI_BINARY_FLAG字段定义为 BINARY。
MYSQLI_CURSOR_TYPE_FOR_UPDATE
MYSQLI_CURSOR_TYPE_NO_CURSOR
MYSQLI_CURSOR_TYPE_READ_ONLY
MYSQLI_CURSOR_TYPE_SCROLLABLE
MYSQLI_STMT_ATTR_CURSOR_TYPE
MYSQLI_STMT_ATTR_PREFETCH_ROWS
MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH
MYSQLI_SET_CHARSET_NAME
MYSQLI_REPORT_INDEX报告查询中是否未使用索引或使用错误索引。
MYSQLI_REPORT_ERROR报告 mysqli 的错误函数调用。
MYSQLI_REPORT_STRICT针对错误而不是警告抛出 mysqli_sql_exception。
MYSQLI_REPORT_ALL打开所有选项(报告全部)。
MYSQLI_REPORT_OFF关闭报告。
MYSQLI_DEBUG_TRACE_ENABLED如果启用 mysqli_debug() 功能,则设置为 1。
MYSQLI_SERVER_QUERY_NO_GOOD_INDEX_USED
MYSQLI_SERVER_QUERY_NO_INDEX_USED
MYSQLI_SERVER_PUBLIC_KEY
MYSQLI_REFRESH_GRANT刷新授权表。
MYSQLI_REFRESH_LOG刷新日志,就像执行 FLUSH LOGS SQL 语句。
MYSQLI_REFRESH_TABLES刷新表缓存,就像执行 FLUSH TABLES SQL语句。
MYSQLI_REFRESH_HOSTS刷新主机缓存,就像执行 FLUSH HOSTS SQL 语句一样。
MYSQLI_REFRESH_REPLICAMYSQLI_REFRESH_SLAVE 常量的别名。从 PHP 8.1.0 开始可用。
MYSQLI_REFRESH_STATUS重置状态变量,如执行 FLUSH STATUS SQL 语句。
MYSQLI_REFRESH_THREADS刷新线程缓存。
MYSQLI_REFRESH_SLAVE在从属复制服务器上:重置主服务器信息,并重新启动从服务器。与执行 RESET SLAVE SQL 语句类似。
MYSQLI_REFRESH_MASTER在主复制服务器上:删除二进制日志索引中列出的二进制日志文件,并截断索引文件。与执行 RESET MASTER SQL 语句类似。
MYSQLI_TRANS_COR_AND_CHAIN将"AND CHAIN"附加到 mysqli_commit() mysqli_rollback()
MYSQLI_TRANS_COR_AND_NO_CHAIN附加"AND NO CHAIN"到 mysqli_commit()mysqli_rollback()
MYSQLI_TRANS_COR_RELEASE将"RELEASE"附加到 mysqli_commit()mysqli_rollback( )
MYSQLI_TRANS_COR_NO_RELEASE将"NO RELEASE"附加到mysqli_commit()mysqli_rollback()
MYSQLI_TRANS_START_READ_ONLY以"START"启动事务TRANSACTION READ ONLY"与 mysqli_begin_transaction()
MYSQLI_TRANS_START_READ_WRITE启动事务为使用mysqli_begin_transaction()"启动事务读写"。
MYSQLI_TRANS_START_CONSISTENT_SNAPSHOT启动使用mysqli_begin_transaction()将事务设置为"使用一致快照开始事务"。
MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT需要 MySQL 5.6.5 及更高版本。