通过MySQLi类库操作数据库的基本步骤:
- 1.建立到MySQL数据库的连接。
如果我们以面向对象的形式来操纵MySQLi,我们其实可以将其封装为一个类进行使用,在这个类的构造函数中,就可以进行数据库的连接。
此外,也可以通过new关键字来new出一个实例的类,再通过里面的方法来进行连接,这2种形式都可以行得通,一般用new关键字生成类,这个法子用得最普遍。
- 2.打开指定的数据库。
其实打开指定的数据库这个操作可以放在第一步:建立到MySQL数据库的连接中同步进行,一般我们也是这么做、这么实现的,也就是说,在我们连接数据库的过程中同时打开指定的数据库。
此外,也可以等第一步的连接成功后,再通过指定方法打开指定的数据库,这种操作也是允许的。
-
3.设置客户端默认的字符集,一般统一的都是utf-8。
-
4.执行SQL预处理查询操作。
将平时只能在MySQL cmd命令行窗口中才能执行的数据库增删改查(CURD)指令,放到我们的代码程序中照样能执行。
-
5.释放结果集。
-
6.关闭数据库连接。
demo演示:建立到MySQL数据库的连接对象和打开数据库的几种方式。
第一种是常见的优雅写法,推荐这种:
<?php
# 1.建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
$serverName = "localhost";
$userName = "root";
$password = "12345678";
$database = "qinfb_school";
$mysqli = @new mysqli($serverName,$userName,$password,$database);
print_r($mysqli);
?>
第二种写法:
<?php
# 1.建立到MySQL数据库的连接对象实例.
$serverName = "localhost";
$userName = "root";
$password = "12345678";
$database = "qinfb_school";
$mysqli = @new mysqli($serverName,$userName,$password);
# 2.打开指定的数据库。
$mysqli -> select_db($database);
print_r($mysqli);
?>
第三种写法:
<?php
# 1.建立到MySQL数据库的连接对象实例.
$serverName = "localhost";
$userName = "root";
$password = "12345678";
$database = "qinfb_school";
$mysqli = @new mysqli();
# 2.调用mysqli实例下面的方法打开指定的数据库。
$mysqli -> connect($serverName,$userName,$password,$database);
print_r($mysqli);
?>
眼尖的你是否看到我们在new关键字前面有一个@小老鼠符号,这个@符号是干嘛用的呢?看到很多的都是说去掉默认的警告信息,其实不然,我是这样理解的。
@符的存在是让我们隐藏起代码报错时,显示出的详细文件路径,那为什么要隐藏起报错的文件路径呢?你想这是一台服务器,当然是为了防止居心叵测之徒对服务器进行的攻击。
没在new关键字前面加@符的后果:显示具体的资源路径
![](https://img.haomeiwen.com/i19781462/d5af6cf43eb6d3bf.png)
加了@符后:报错时,没有了文件资源的具体路径
![](https://img.haomeiwen.com/i19781462/a98ebbf7d49d7a06.png)
调用mysqli实例下的connect_errno属性得到连接产生的错误编号;调用connect_error属性可以得到连接产生的错误细腻些;
<?php
# 1.建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
$serverName = "localhost";
$userName = "root";
$password = "12345678";
$database = "qinfb_school";
$mysqli = @new mysqli($serverName,$userName,$password,$database);
if($mysqli -> connect_errno){
die('Connect Error:'.$mysqli -> connect_error);
}
?>
mysqli实例下具体有哪些属性呢?
![](https://img.haomeiwen.com/i19781462/d44f356b5dca505d.png)
获取客户端和服务器端的信息、版本:既可以调用属性去获取详情,也可以调用方法的形式去获取详情。
<?php
# 1.建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
$serverName = "localhost";
$userName = "root";
$password = "12345678";
$database = "qinfb_school";
$mysqli = @new mysqli($serverName,$userName,$password,$database);
if($mysqli -> connect_errno){
die('Connect Error:'.$mysqli -> connect_error);
}
echo '客户端信息:'.$mysqli -> client_info.'<br/>';
echo '客户端信息:'.$mysqli -> get_client_info().'<br/>';//调用这个方法也可以获取客户端信息
echo '客户端的版本:'.$mysqli -> client_version.'<br/>';
echo '服务器端的信息:'.$mysqli -> server_info.'<br/>';
echo '服务器端的信息:'.$mysqli -> get_server_info().'<br/>';//调用方法的形式也是可以获取到服务器的信息的
echo '服务器端的版本:'.$mysqli -> server_version.'<br/>';
?>
![](https://img.haomeiwen.com/i19781462/1939d66a6cc4718e.png)
MySQLi扩展面向对象的基本使用大体流程:
<?php
# 1.建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
$serverName = "localhost";
$userName = "root";
$password = "12345678";
$database = "qinfb_school";
$mysqli = @new mysqli($serverName,$userName,$password,$database);
if($mysqli -> connect_errno){
//如果有连接错误,得到错误信息
die('Connect Error:'.$mysqli -> connect_error);
}
# 2.设置默认的客户端编码方式
$mysqli -> set_charset('utf-8');
# 3.执行SQL预处理查询。
//生成一张表和一些字段。
$sql = <<< EOF
create table if not exists student(
stu_id tinyint unsigned auto_increment key,
stu_name varchar(20) not null
)
EOF;
# 4.只执行一条sql语句,调用query()方法即可
$res = $mysqli -> query($sql);
var_dump($res);
# 5.关闭数据库连接
$mysqli -> close();
?>
![](https://img.haomeiwen.com/i19781462/d9e0d4b1c8a67235.png)
值得注意的是:当使用如下关键字:select/desc/describe/show/explain时,执行成功返回的是mysqli_result对象,倘若执行失败返回的是false。对于其他SQL语句的执行,执行成功返回的是true,否则返回false。
网友评论