全栈:mysqli类操作MYSQL数据库

全栈:mysqli类操作MYSQL数据库PHPmysqli 扩展的应用 包括使用 newmysqli 进行数据库连接初始化 var dump 用于调试连接对象和查询结果

大家好,欢迎来到IT知识分享网。

 概述

mysqli (MySQL Improved) 是 PHP 的一个扩展,用于实现对 MySQL 数据库的访问和操作。它提供了丰富的方法和属性,使得开发者能够以面向对象的方式进行数据库编程。

1.[创建连接]:使用mysqli类中构造函数(方法),实例化数据库连接对象

__construct():构造函数,mysqli类中内置方法,初始化mysqli对象时自动调用

参数:主机名(ip)、用户名、密码、数据库名(可选)、端口号(可选)、套接字(可选)

用途:创建一个新的mysqli类的对象,使用传递参数,尝试连接数据库

可以预先定义用到的变量,也可在实例化时,直接传入原始参数 $host = '127.0.0.1'; $username = 'root'; $password = 'root'; $conn = @new mysqli($host, $username, $password); @ :错误抑制符,如果连接失败,不显示失败提示的敏感信息

2.[检查连接]:使用if条件表达式判断,对象内connect_error属性的值,从而进行连接情况的判断

connect_error(): mysqli类,实例化成对象后的属性

属性返回值:出错时,它是一个描述错误的字符串,连接正常则为 NULL

使用if条件表达式进行属性返回值的判断

if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); }else{ echo 'status:ok'; } 当数据库连接报错时,对象内connect_error属性值为描述报错内容的字符串。if判断为真,执行if语句 die 函数会输出括号内的错误信息,然后终止脚本的执行 数据库连接正常时,对象内connect_error属性值为NULL。if判断为假,执行else语句。 输出状态为ok

if条件表达式如何判断

if 语句,表达式的值会被自动转换为一个布尔值,其中:

真值(truthy):任何非零的、非空的、非假的值都会被转换为 true。

假值(falsy):值为 0、0.0、""(空字符串)、null、false、NaN(非数字)、一个空数组 array() 等,都会被转换为 false。

3.[执行SQL语句,操作数据库]:使用对象内query方法,进行sql语句的执行

query():对象内置方法,用于执行sql语句,并返回对应结果

所需参数:

将SQL语句以字符串的形式进行赋值的变量,也可以是原始数据

方法返回值:

query() 方法返回的结果取决于执行的 SQL 语句类型:

  1. 对于返回数据集的语句(如 SELECT, SHOW, DESCRIBE 等),query() 返回一个 mysqli_result 对象,这个对象包含了查询结果集,可以通过它来获取具体的数据行和列。
  2. 对于不返回数据集的语句(如 INSERT, UPDATE, DELETE, DROP 等),query() 返回 true,表示语句执行成功。在这些情况下,可以使用 $mysqli->affected_rows 来获取影响的行数,或者使用 $mysqli->insert_id 来获取自增主键的值。
  3. 如果 SQL 语句执行失败query() 返回 false。此时,可以使用 $mysqli->error 来获取错误信息,或者使用 $mysqli->errno 来获取错误编号。
$sql = "SHOW DATABASES"; $result = $conn->query($sql); var_dump($result); 

使用var_dump输出结果集的简略信息,包含[索引,字段数(列数),字段的长度信息,行数,类型]

object(mysqli_result)#2 (5)

        {

            [“current_field”]=> int(0)

            [“field_count”]=> int(1)

            [“lengths”]=> NULL

            [“num_rows”]=> int(17)

            [“type”]=> int(0)

        }

失败返回:bool(false)

  • "current_field": 当前字段索引,对于 SHOW DATABASES 这类查询,它通常为 0,因为查询结果不涉及字段索引。
  • "field_count": 结果集中的字段数。对于 SHOW DATABASES 查询,这个值是 1,因为查询只返回一个字段,即数据库的名称。
  • "lengths": 一个数组,包含了结果集中每个字段的长度信息。对于 SHOW DATABASES 查询,这个属性通常是 NULL,因为长度信息不适用。
  • "num_rows": 结果集中的行数。在你的例子中,服务器上有 17 个数据库。
  • "type": 结果集的类型,对于 mysqli_result 对象,这个值通常是 0,表示这是标准的 mysqli_result 对象。

4.[判断查询情况并输出具体查询结果]:使用if判断结果集对象,并使用fetch方法进行while循环输出

$result:执行SQL语句后的结果集对象

fetch_assoc():结果集对象中包含的方法,用于输出结果集中每一行的内容,并将其与列名拼接成关联数组,列名为键,行具体内容为值

每次调用都输出结果集中下一行的内容,当结果集中没有可以输出的内容时,返回NULL

$row = $result->fetch_assoc()

 var_dump($row);

输出结果集中第一行的内容: array(1) { [“Database”]=> string(18) “information_schema” }

if ($result) {
        echo "Databases on the server:<br>";
        // 输出每个数据库名称
        while ($row = $result->fetch_assoc()) {
            echo $row['Database'] . "<br>";
        }
        $conn->close()
    } else {
        var_dump($result);  
        echo'<br><hr>'; //php解释器中false会转换成0,而0在html中是不可见的
        echo "Query failed: " . $conn->error;
    }

循环开始:while 循环开始,调用 fetch_assoc() 尝试获取第一行数据。

获取数据:如果存在数据行,fetch_assoc() 返回一个关联数组,循环继续。

处理数据:在循环体内部,处理(通常是输出)当前行的数据。

循环继续:循环结束后再次调用 fetch_assoc() 尝试获取下一行数据。

结果集结束:当结果集中没有更多的行时,fetch_assoc() 返回 null,while 循环的条件不再满足,循环停止。

关闭结果集:在循环结束后,通常调用 $result->close() 来关闭结果集,释放资源。

使用if进行结果集对象的判断

如果sql语句执行成功,进行while循环

1.使用$row变量,接收结果集对象调用fetch_assoc方法,产生的关联数组。

2.输出具体的值,直到结果集中所有数据输出完成

3.结果集中所有数据输出完成,返回NULL传递给while循环,while循环关闭

4.调用mysqli对象中close方法关闭数据库连接

如果sql语句执行失败,结果集对象返回false

执行else语句,调用mysqli对象内error方法输出具体报错信息

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/121276.html

(0)
上一篇 2025-10-24 16:45
下一篇 2025-10-24 17:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信