1 引言
2 MySQLi属性及描述
3 MySQLi方法及描述
4 获取MySQLi属性信息
5 常用的MySQLi方法
在web开发中,php与mysql可谓是最合适不过的搭档了,这两兄弟经常一起合作,作为开发者的我们得要好好的了解一下它们是如何相处的,下面笔者做了些小笔记,方便日后查阅,同时也希望能够帮助到大家,再次之前我们可以先阅读一下php的官方描述,两者结合阅读效果更佳。
php官方MySQLI类传送门:https://www.php.net/manual/zh/class.mysqli.php
int $affected_rows; // 受影响的条数
int $connect_errno; // 最后一次连接的错误代码
string $connect_error; // 最后一次连接的错误描述
int $errno; // 错误号
array $error_list; // 上次执行的命令中的错误列表。
string $error; // 错误信息
int $field_count;
string $client_info; // 客户端信息
int $client_version; // 客户端版本
string $host_info; // 主机信息
string $protocol_version;// 协议版本
string $server_info; // 服务的信息
int $server_version; // 服务端版本
string $info; // 提示信息
mixed $insert_id; // 最后插入的id
string $sqlstate; // SQL状态码
int $thread_id;
int $warning_count; // 警告条数
mysqli::$affected_rows — 上一次MySQL操作中受影响的行数。
mysqli::autocommit — 打开或关闭本次数据库连接的自动命令提交事务模式
mysqli::begin_transaction — 开启事务
mysqli::change_user — 更改指定数据库连接的用户
mysqli::character_set_name — 返回当前数据库连接的默认字符编码
mysqli::close — 关闭先前打开的数据库连接
mysqli::commit — 提交一个事务
mysqli::$connect_errno — 返回上次连接调用中的错误代码。
mysqli::$connect_error — 返回上一个连接错误的描述
mysqli::__construct — 构造函数
mysqli::debug — debug
mysqli::dump_debug_info — 将调试信息输出到日志
mysqli::errno — 返回最近函数调用的错误代码
mysqli::$error_list — 返回上次执行的命令中的错误列表。
mysqli::$error — 返回上一个错误的描述
mysqli::$field_count — 返回查询的列数。
mysqli::get_charset — 返回字符集对象
mysqli::$client_info — 获取 MySQL 客户端信息
mysqli_get_client_version — 作为一个整数返回MySQL客户端的版本
mysqli::get_connection_stats — 返回客户端连接的统计数据
mysqli::$host_info — 返回一个表述使用的连接类型的字符串
mysqli::$protocol_version — 返回MySQL使用的协议版本号
mysqli::$server_info — 返回MySQL服务器的版本号
mysqli::$server_version — 作为一个整数返回MySQL服务器的版本
mysqli::get_warnings — 警告信息
mysqli::$info — 返回最近执行的 SQL 语句的信息
mysqli::init — 初始化 MySQLi 并返回一个资源类型的值,这个值可以作为 mysqli_real_connect() 函数的传入参数
mysqli::$insert_id — 返回最后一条插入语句产生的自增 ID
mysqli::kill — 让服务器杀掉一个 MySQL 线程
mysqli::more_results — 检查批量查询中是否还有查询结果
mysqli::multi_query — 执行查询
mysqli::next_result — 为读取 multi_query 执行之后的下一个结果集做准备
mysqli::options — 设置选项
mysqli::ping — ping 一个连接,或者如果连接处于断开状态,重新连接
mysqli::poll — 轮询连接
mysqli::prepare — 准备执行一个 SQL 语句
mysqli::query — 对数据库执行一次查询
mysqli::real_connect — 建立一个 MySQL 服务器连接
mysqli::real_escape_string — 根据当前连接的字符集,对于 SQL 语句中的特殊字符进行转义
mysqli::real_query — 执行一个mysql查询
mysqli::reap_async_query — 获取异步查询的结果
mysqli::refresh — 刷新
mysqli::release_savepoint — 从当前事务的保存点中移除一个命名保存点
mysqli::rollback — 回退当前事务
mysqli::rpl_query_type — 返回 RPL 查询类型
mysqli::savepoint — 在当前事务中增加一个命名保存点
mysqli::select_db — 选择用于数据库查询的默认数据库
mysqli::send_query — 发送请求并返回结果
mysqli::set_charset — 设置默认字符编码
mysqli::set_local_infile_default — 取消用户指定的回调函数
mysqli::set_local_infile_handler — 设置 LOAD DATA LOCAL INFILE 命令的回调函数
mysqli::$sqlstate — 返回上一次 SQL 操作的 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 —返回上次查询中的警告数
4.1 打印MySQLi连接信息
set_charset('utf8');
print_r($link);
?>
打印结果
mysqli Object
(
[affected_rows] => 0
[client_info] => mysqlnd 5.0.12-dev - 20150407 - $Id: 241ae00989d1995ffcbbf63d579943635faf9972 $
[client_version] => 50012
[connect_errno] => 0
[connect_error] =>
[errno] => 0
[error] =>
[error_list] => Array
(
)
[field_count] => 0
[host_info] => localhost via TCP/IP
[info] =>
[insert_id] => 0
[server_info] => 8.0.12
[server_version] => 80012
[stat] => Uptime: 306 Threads: 2 Questions: 10 Slow queries: 0 Opens: 111 Flush tables: 2 Open tables: 89 Queries per second avg: 0.032
[sqlstate] => 00000
[protocol_version] => 10
[thread_id] => 10
[warning_count] => 1
)
4.2 打印服务端信息
set_charset('utf8');
print_r($link->server_info);
?>
打印结果
8.0.12
注:获取MySQLi属性的方式都一样,这里就不一一试了,相信大家都可以触类旁通的。
创建并选定数据库
$mysqli = new mysqli('localhost','root','root','test');
设置字符集
$mysqli->set_charset('utf8');
注:如果在创建时没有指定数据库,我们可以通过mysqli::select_db来选择数据库,例如
$mysqli->select_db('test');
获取上一次MySQL操作中受影响的行数。
$mysqli->affected_rows();
返回上次连接调用中的错误代码。
$mysqli->connect_errno()
返回上一个连接错误的描述
$mysqli->connect_error();
单语句查询(mysqli_result对象将在另一篇文章介绍 )
$sql = 'SELECT * FROM user';
$result = $mysqli->query($sql);
注:mysqli::query对于SELECT、DESC、SHOW、EXPLAIN、DESCRIBE语句执行成功则返回mysqli_result对象,执行失败则返回false,对于其它的SQL语句的话,执行成功返回true,执行失败返回false。
多语句查询
$sql = 'SELECT * FROM user';
$sql.= 'SELECT * FROM admin';
$result = $mysqli->multi_query($sql);
SQL预处理(mysql_stmt对象将在另一篇文章介绍 )
$sql = 'SELECT * FROM user WHERE name = ?';
$mysql_stmt = $mysqli->prepare($sql);
事务处理
autocommit(false);
$sql = "UPDATE user SET money = money+100 WHERE name='trevor' ";
$sql. = "UPDATE user SET money = money-100 WHERE name='brell' ";
$result = $mysqli->multi_query($sql);
if($result){
$mysqli->commit();
$mysqli->autocommit(true);
}else{
$mysqli->rollback();
}
关闭数据库连接
$mysqli->close();
mysqli对象、mysqli_result对象、mysqli_stmt对象之间的关系图