连接
说明
面向对象风格
object mysqli::__construct([string $host[, string $user[, string $password[, string $database[, int $port[, string $socket]]]]]])
#别名函数
mysqli::connect(string $host, string $user, string $password, string $database, int $port, string $socket)
过程化风格
object mysqli_connect([string $host[, string $user[, string $password[, string $database[, int $port[, string $socket]]]]]])
打开一个新的到 MySQL
的连接
参数
host 主机名
user 用户名
password 用户名对应的密码
database 当前使用的库
port 端口
socket 指定应使用的
socket
或 管道
返回值
返回一个表示连接到 MySQL
服务器的对象
初始化一个资源对象
说明
面向对象风格
mysqli mysqli::init ( void )
过程化风格
mysqli mysqli_init ( void )
返回值
返回一个给 mysqli::real_connect
使用的资源对象
通过资源对象建立连接
说明
面向对象风格
bool mysqli::real_connect([string $host[, string $user[, string $password[, string $database[, int $port[, string $socket[, int $flag]]]]]]])
过程化风格
bool mysqli_real_connect(mysqli $link, [string $host[, string $user[, string $password[, string $database[, int $port[, string $socket[, int $flag]]]]]]])
建立一个到 MySQL 服务器的链接。
与 mysqli::connect()
的不同点:
mysqli::real_connect()
需要一个有效的对象,这个对象由mysqli::init()
创建。可以使用
mysqli::options()
设置各种连接设置。提供
flags
参数。
参数
link 连接标识(仅过程化风格需要此参数)
host 主机名
user 用户名
password 用户名对应的密码
database 当前使用的库
port 端口
socket 指定应使用的
socket
或 管道flags 设置连接参数:
MYSQLI_CLIENT_COMPRESS 使用压缩协议
MYSQLI_CLIENT_FOUND_ROWS 返回语句匹配的行数,而不是影响的行数
MYSQLI_CLIENT_IGNORE_SPACE 允许函数名称后有空格,这将使所有的函数名称成为保留字。
MYSQLI_CLIENT_INTERACTIVE 在关闭连接之前允许等待 interactive_timeout 秒, 他替代 wait_timeout 设定。
MYSQLI_CLIENT_SSL 使用 SSL 加密
返回值
true
或 false
设置选项
说明
面向对象风格
bool mysqli::options ( int $option , mixed $value )
过程化风格
bool mysqli_options ( mysqli $link , int $option , mixed $value )
为连接设置连接选项,可以多次调用来设置多个选项,此函数必须用在 mysqli::init()
之后,用在 mysqli::real_connect()
之前。
参数
link 连接标识(仅过程化风格需要此参数)
options 要设置的选项
MYSQLI_OPT_CONNECT_TIMEOUT
MYSQLI_OPT_LOCAL_INFILE
MYSQLI_INIT_COMMAND
MYSQLI_READ_DEFAULT_FILE
MYSQLI_READ_DEFAULT_GROUP
MYSQLI_SERVER_PUBLIC_KEY
MYSQLI_OPT_NET_CMD_BUFFER_SIZE
MYSQLI_OPT_NET_READ_BUFFER_SIZE
MYSQLI_OPT_INT_AND_FLOAT_NATIVE
MYSQLI_OPT_SSL_VERIFY_SERVER_CERT
返回值
true
或 false
关闭连接
说明
面向对象风格
bool mysqli::close ( void )
过程化风格
bool mysqli_close ( mysqli $link )
关闭连接
参数
- link 连接标识(仅过程化风格需要此参数)
返回值
true
或 false
停止指定线程ID的连接
说明
面向对象风格
bool mysqli::kill ( int $processid )
过程化风格
bool mysqli_kill ( mysqli $link , int $processid )
参数
link 连接标识(仅过程化风格需要此参数)
processid 线程ID
返回值
true
或 false
ping服务器连接
说明
面向对象风格
bool mysqli::ping (void)
过程化风格
bool mysqli_ping ( mysqli $link )
Ping
服务器连接,或者在连接断开时尝试重新连接
参数
- link 连接标识(仅过程化风格需要此参数)
返回值
true
或 false
切换用户
说明
面向对象风格
bool mysqli::change_user ( string $user , string $password , string $database )
过程化风格
bool mysqli_change_user ( mysqli $link , string $user , string $password , string $database )
更改指定数据库连接的用户
参数
link 连接标识(仅过程化风格需要此参数)
user 用户名
password 用户名对应的密码
database 当前使用的库
返回值
true
或 false
选择数据库
说明
面向对象风格
bool mysqli::select_db ( string $dbname )
过程化风格
bool mysqli_select_db ( mysqli $link , string $dbname )
选择用于数据库查询的默认数据库
参数
link 连接标识(仅过程化风格需要此参数)
name 数据库名称
返回值
true
或 false
返回默认字符编码
说明
面向对象风格
string mysqli::character_set_name ( void )
过程化风格
string mysqli_character_set_name ( mysqli $link )
返回当前数据库连接的默认字符编码。
参数
- link 连接标识(仅过程化风格需要此参数)
返回值
返回字符串形式的字符编码
返回字符编码对象
说明
面向对象风格
object mysqli::get_charset ( void )
过程化风格
object mysqli_get_charset ( mysqli $link )
返回当前数据库连接的字符编码对象。
参数
- link 连接标识(仅过程化风格需要此参数)
返回值
返回当前数据库连接的字符编码对象。
设置默认字符编码
说明
面向对象风格
bool mysqli::set_charset ( string $charset )
过程化风格
bool mysqli_set_charset ( mysqli $link , string $charset )
设置在数据库间传输字符时所用的默认字符编码。
参数
link 连接标识(仅过程化风格需要此参数)
charset 被设为默认的字符编码名。
返回值
true
或 false
设置自动提交事务
说明
面向对象风格
bool mysqli::autocommit ( bool $mode )
过程化风格
bool mysqli_autocommit ( mysqli $link , bool $mode )
打开或关闭本次数据库连接的自动提交事务模式。
如果关闭自动提交,则在未再次开启之前,当前连接中的自动提交一直是关闭的,之后的第一条 SQL 自动开始一个事务,事务结束后的下一条 SQL 重新开始新的事务。
commit
提交或不指定保存点的 rollback
回滚才会结束事务。
参数
link 连接标识(仅过程化风格需要此参数)
mode bool值,true 打开自动提交,false 关闭自动提交
返回值
true
或 false
临时开始事务
说明
面向对象风格
bool mysqli::begin_transaction ([ int $flags [, string $name ]] )
过程化风格
bool mysqli_begin_transaction ( mysqli $link [, int $flags [, string $name ]] )
临时开启事务(临时关闭自动提交),临时事务结束后回到原来的自动或非自动提交模式
参数
link 连接标识(仅过程化风格需要此参数)
flags 有效的值有:
MYSQLI_TRANS_START_READ_ONLY 只读
MYSQLI_TRANS_START_READ_WRITE 读和写
MYSQLI_TRANS_START_WITH_CONSISTENT_SNAPSHOT
name 事务保存点
保存点只在当前事务有效,回滚时可以回滚到指定保存点,而不必回滚整个事务。
begin_transaction
设置的保存点貌似没有意义:MySQL
事务不能嵌套,回滚到此保存点,就相当于整体回滚啦。以前理解有问题,回滚时如果指定保存点并不会结束事务,所以回滚到事务开始位置设置的保存点,和不指定保存点整体回滚还是有差异的,前者不会结束事务,可以继续处理其他逻辑,后者会结束事务。
返回值
true
或 false
设置事务的保存点
说明
面向对象风格
bool mysqli::savepoint ( string $name )
过程化风格
bool mysqli_savepoint ( mysqli $link , string $name )
设置事务保存点,保存点只在当前事务有效,回滚时可以回滚到指定保存点,而不必回滚整个事务。
参数
link 连接标识(仅过程化风格需要此参数)
name 事务保存点
返回值
true
或 false
提交事务
说明
面向对象风格
bool mysqli::commit ( void )
过程化风格
bool mysqli_commit ( mysqli $link )
提交事务
参数
- link 连接标识(仅过程化风格需要此参数)
返回值
true
或 false
事务回滚
说明
面向对象风格
bool mysqli::rollback ([ int $flags [, string $name ]] )
过程化风格
bool mysqli_rollback ( mysqli $link [, int $flags [, string $name ]] )
事务回滚
参数
link 连接标识(仅过程化风格需要此参数)
flags 有效的值有:
- MYSQLI_TRANS_COR_AND_CHAIN
- MYSQLI_TRANS_COR_AND_NO_CHAIN
- MYSQLI_TRANS_COR_RELEASE
- MYSQLI_TRANS_COR_NO_RELEASE
name 事务保存点
回滚时可以指定回滚到的保存点,而不必回滚整个事务。
回滚时如果指定保存点,则部分回滚,此时事务并未结束,可以继续执行 SQL 、或者
commit
提交 、或者回滚到其他保存点、或者不指定保存点全部回滚
返回值
true
或 false
刷新
说明
面向对象风格
public bool mysqli::refresh ( int $options )
过程化风格
int mysqli_refresh ( resource $link , int $options )
刷新指定选项
参数
link 连接标识(仅过程化风格需要此参数)
options 要刷新的选项:
MYSQLI_REFRESH_GRANT 刷新权限表
使用
insert
update
delete
直接操作mysql.user
等权限表时,新的权限并没有读入内存,不会生效。重启 MySQL 服务或者使用此选项刷新权限表,权限才会生效MYSQLI_REFRESH_LOG 刷新日志
MYSQLI_REFRESH_TABLES 刷新表缓
MYSQLI_REFRESH_HOSTS 刷新主机缓存
MYSQLI_REFRESH_STATUS 刷新状态缓存
MYSQLI_REFRESH_THREADS 刷新线程缓存
MYSQLI_REFRESH_SLAVE 在从服务器上刷新主服务器信息,然后重启从服务器
MYSQLI_REFRESH_MASTER 在主服务器上:删除二进制日志索引中列出的二进制日志文件,并截断索引文件
返回值
true
或 false
查询数据库
说明
面向对象风格
mixed mysqli::query( string $query[, int $resultmode = MYSQLI_STORE_RESULT] )
过程化风格
mixed mysqli_query( mysqli $link, string $query[, int $resultmode = MYSQLI_STORE_RESULT] )
对数据库进行查询。
对于 SELECT
查询,此函数类似于调用 mysqli::real_query()
,然后调用 mysqli::use_result()
或 mysqli::store_result()
。
参数
link 连接标识(仅过程化风格需要此参数)
query SQL语句
resultmode 声明查询的模式
MYSQLI_STORE_RESULT 结果集存储模式(默认值)
查询时提取结果集返回给
client
,并分配内存,存储到用户程序空间中,之后调用mysqli::fetch_array()
是从本地取数据,查询大数据集时会占用大量内存。相当于mysqli::real_query()
和mysqli::store_result()
组合。MYSQLI_USE_RESULT 结果集检索模式
查询的时候并没有从
server
将结果集取回,之后调用mysqli::fetch_array()
每次都要向server
请求结果行,查询大数据集时只会占用少量内存。相当于mysqli::real_query()
和mysqli::use_result()
组合。在
MYSQLI_USE_RESULT
模式的查询后,如果结果集未释放(通过mysqli::free_result()
或mysqli::fetch*
系列函数释放),再执行查询语句会报错。MYSQLI_ASYNC 异步执行查询,后续通过
mysqli::poll()
从此类查询中获取结果集
返回值
失败时返回 FALSE,成功执行 SELECT
, SHOW
, DESCRIBE
或 EXPLAIN
查询会返回一个 mysqli_result
对象,其他查询则返回TRUE。
查询数据库
说明
面向对象风格
bool mysqli::real_query( string $query)
过程化风格
bool mysqli_real_query( mysqli $link, string $query)
执行一个单条数据库查询, 其结果可以使用 mysqli::store_result()
或 mysqli::use_result()
检索或存储。
为了确定给定的查询是否真的返回一个结果集, 可以查看 $mysqli->field_count
是否为 0 ,不为 0 则说明查询返回的是结果集。
参数
link 连接标识(仅过程化风格需要此参数)
query SQL语句
返回值
true
或 false
启动结果集检索
说明
面向对象风格
mysqli_result mysqli::use_result( void)
过程化风格
mysqli_result mysqli_use_result( mysqli $link)
启动结果集检索模式,对于大数据集不会超出内存限制。可以用在 mysqli::real_query()
或者 mysqli::multi_query()
之后
参数
- link 连接标识(仅过程化风格需要此参数)
返回值
成功则返回一个未储存的结果集对象,等待检索;失败返回 false
启动结果集储存模式
说明
面向对象风格
mysqli_result mysqli::store_result( void)
过程化风格
mysqli_result mysqli_store_result( mysqli $link)
启动结果集储存模式,对于大数据集会超出内存限制。可以用在 mysqli::real_query()
或者 mysqli::multi_query()
之后
参数
- link 连接标识(仅过程化风格需要此参数)
返回值
成功则返回一个已储存的结果集对象,等待检索;失败返回 false
批量查询数据库
说明
面向对象风格
bool mysqli::multi_query( string $query)
过程化风格
bool mysqli_multi_query( mysqli $link, string $query)
执行一个或多个以分号 ;
连接的查询。
要从第一个查询中检索结果集,可以使用 mysqli::use_result()
或 mysqli::store_result()
。所有后续查询结果使用 mysqli::more_results()
和 mysqli::next_result()
进行处理。
参数
link 连接标识(仅过程化风格需要此参数)
query SQL语句
返回值
如果第一条语句失败,则返回false。要从其他语句中检索后续错误,必须首先调用 mysqli::next_result()
。
检查多查询是否有更多结果
说明
面向对象风格
bool mysqli::more_results( void)
过程化风格
bool mysqli_more_results( mysqli $link)
检查先前调用的多查询 mysqli::multi_query()
是否有更多结果。
参数
- link 连接标识(仅过程化风格需要此参数)
返回值
还有结果则返回 true
,反之返回 false
从多查询中准备下一个结果
说明
面向对象风格
bool mysqli::next_result( void)
过程化风格
bool mysqli_next_result( mysqli $link)
从多查询中准备下一个结果,然后使用 mysqli::use_result()
或 mysqli::store_result()
检索或储存结果集
参数
- link 连接标识(仅过程化风格需要此参数)
返回值
true
或 false
错误代码
说明
面向对象风格
int $mysqli->errno
过程化风格
int mysqli_errno ( mysqli $link )
返回最近函数调用的错误代码
参数
- link 连接标识(仅过程化风格需要此参数)
返回值
最后一次调用产生的错误代码, 返回0代表没有错误发生.
错误描述
说明
面向对象风格
int $mysqli->error
过程化风格
int mysqli_error ( mysqli $link )
返回最近函数调用的错误描述
参数
- link 连接标识(仅过程化风格需要此参数)
返回值
最后一次调用产生的错误描述, 返回 空字符串 代表没有错误发生.
错误编码
说明
面向对象风格
int $mysqli->sqlstate
过程化风格
int mysqli_sqlstate ( mysqli $link )
返回最近函数调用的错误编码
参数
- link 连接标识(仅过程化风格需要此参数)
返回值
最后一次调用产生的错误的 SQLSTATE 错误编码(五位字母和数字组成的字符串), 返回 ‘00000’ 代表没有错误发生.
错误数组
说明
面向对象风格
array $mysqli->error_list
过程化风格
array mysqli_error_list ( mysqli $link )
返回最近一次 mysqli
函数调用可能成功或失败的错误数组。
参数
- link 连接标识(仅过程化风格需要此参数)
返回值
错误数组
返回最近的执行结果统计信息
说明
面向对象风格
string $mysqli->info
过程化风格
string mysqli_info ( mysqli $link )
返回最近函数调用的错误描述
参数
- link 连接标识(仅过程化风格需要此参数)
返回值
返回最近的执行结果统计信息
可能的返回值:
Query type | Example result string |
---|---|
INSERT INTO…SELECT… | Records: 100 Duplicates: 0 Warnings: 0 |
INSERT INTO…VALUES (…),(…),(…) | Records: 3 Duplicates: 0 Warnings: 0 |
LOAD DATA INFILE … | Records: 1 Deleted: 0 Skipped: 0 Warnings: 0 |
ALTER TABLE … | Records: 3 Duplicates: 0 Warnings: 0 |
UPDATE … | Rows matched: 40 Changed: 40 Warnings: 0 |
最后一次插入时自动生成的id
说明
面向对象风格
mixed $mysqli->insert_id
过程化风格
mixed mysqli_insert_id ( mysqli $link )
参数
- link 连接标识(仅过程化风格需要此参数)
返回值
返回最后一次插入 auto_increment
列自动生成的 id
。如果连接上没有过插入,或者插入没有更新自增值,则返回 0 。
受影响的行数
说明
面向对象风格
int $mysqli->affected_rows;
过程化风格
int mysqli_affected_rows ( mysqli $link )
受影响的行数
参数
- link 连接标识(仅过程化风格需要此参数)
返回值
大于零的整数表示受影响的行数。零表示没有受影响的行。-1表示查询返回错误。空表示为函数提供的参数无效。
最近一次查询时的列数
说明
面向对象风格
int $mysqli->field_count
过程化风格
int mysqli_field_count ( mysqli $link )
最近一次查询时的列数。对于判断 mysqli_query
mysqli_real_query
执行指令是否真的返回一个结果集。
参数
- link 连接标识(仅过程化风格需要此参数)
返回值
返回最近一次查询时的列数。
返回线程ID
说明
面向对象风格
int $mysqli->thread_id;
过程化风格
int mysqli_thread_id ( mysqli $link )
参数
- link 连接标识(仅过程化风格需要此参数)
返回值
返回当前连接的线程ID