PHP之MySQLi类讲解

目录

1 引言 

2 MySQLi属性及描述 

3 MySQLi方法及描述

4 获取MySQLi属性信息

5 常用的MySQLi方法

 


 

1 引言 

在web开发中,php与mysql可谓是最合适不过的搭档了,这两兄弟经常一起合作,作为开发者的我们得要好好的了解一下它们是如何相处的,下面笔者做了些小笔记,方便日后查阅,同时也希望能够帮助到大家,再次之前我们可以先阅读一下php的官方描述,两者结合阅读效果更佳。

php官方MySQLI类传送门:https://www.php.net/manual/zh/class.mysqli.php

 

2 MySQLi属性及描述 

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;  // 警告条数

 

3 MySQLi方法及描述

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 获取MySQLi属性信息

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属性的方式都一样,这里就不一一试了,相信大家都可以触类旁通的。

 

5 常用的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();   

 

6 预告

mysqli对象、mysqli_result对象、mysqli_stmt对象之间的关系图

PHP之MySQLi类讲解_第1张图片

你可能感兴趣的:(PHP)