MySQLi扩展面向对象的基本使用

2021-06-07  本文已影响0人  似朝朝我心

通过MySQLi类库操作数据库的基本步骤:

如果我们以面向对象的形式来操纵MySQLi,我们其实可以将其封装为一个类进行使用,在这个类的构造函数中,就可以进行数据库的连接。

此外,也可以通过new关键字来new出一个实例的类,再通过里面的方法来进行连接,这2种形式都可以行得通,一般用new关键字生成类,这个法子用得最普遍。

其实打开指定的数据库这个操作可以放在第一步:建立到MySQL数据库的连接中同步进行,一般我们也是这么做、这么实现的,也就是说,在我们连接数据库的过程中同时打开指定的数据库。

此外,也可以等第一步的连接成功后,再通过指定方法打开指定的数据库,这种操作也是允许的。

将平时只能在MySQL cmd命令行窗口中才能执行的数据库增删改查(CURD)指令,放到我们的代码程序中照样能执行。


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关键字前面加@符的后果:显示具体的资源路径


加了@符后:报错时,没有了文件资源的具体路径

调用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实例下具体有哪些属性呢?


获取客户端和服务器端的信息、版本:既可以调用属性去获取详情,也可以调用方法的形式去获取详情。
<?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/>';
?>

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();
?>
image.png
值得注意的是:当使用如下关键字:select/desc/describe/show/explain时,执行成功返回的是mysqli_result对象,倘若执行失败返回的是false。对于其他SQL语句的执行,执行成功返回的是true,否则返回false。
上一篇 下一篇

猜你喜欢

热点阅读