Code前端首页关于Code前端联系我们

了解如何使用 mysqli

terry 2年前 (2023-09-29) 阅读数 70 #PHP
文章标签 PHP

1。什么是 mysqli

MySQLi 是一个配备 PHP 的扩展程序,用于操作 MySQL 数据库。可以认为是PHP操作MySQL数据库的接口。 MySQLi 提供了更简单的面向对象的 API,支持新的 MySQL 功能。

MySQLi扩展同时提供了面向过程的接口和面向对象的接口,以满足不同的用户需求。

2。面向流程的使用

首先,我们需要连接MySQL数据库。连接MySQL数据库时,需要提供主机名、用户名、密码、数据库名等信息,如下所示:

    $mysqli = mysqli_connect("localhost", "root", "password", "database");
    if (!$mysqli) {
        echo "连接失败";
        exit;
    }

接下来我们就可以执行SQL语句了,比如查询数据表中的数据:

    $sql = "SELECT * FROM Table";
    $result = mysqli_query($mysqli, $sql);
    if (!$result) {
        echo "查询失败";
        exit;
    }
    while ($row = mysqli_fetch_assoc($result)) {
        echo $row["column_name"];
    }
    mysqli_free_result($result);

最后,我们需要关闭与MySQL数据库的连接:

    mysqli_close($mysqli);

3。如何使用面向对象

面向对象的用法与面向过程的用法类似,只不过必须先创建一个 MySQLi 对象:

    $mysqli = new mysqli("localhost", "root", "password", "database");
    if ($mysqli->connect_errno) {
        echo "连接失败";
        exit;
    }

接下来我们就可以执行SQL语句了,比如查询数据表中的数据:

    $sql = "SELECT * FROM Table";
    $result = $mysqli->query($sql);
    if (!$result) {
        echo "查询失败";
        exit;
    }
    while ($row = $result->fetch_assoc()) {
        echo $row["column_name"];
    }
    $result->close();

最后,我们需要关闭与MySQL数据库的连接:

    $mysqli->close();

4。预处理声明

准备好的语句是MySQLi扩展提供的安全的SQL执行方法。这可以通过参数化 SQL 语句来防止 SQL 注入攻击。

如何使用准备好的语句如下:

    $mysqli = new mysqli("localhost", "root", "password", "database");
    if ($mysqli->connect_errno) {
        echo "连接失败";
        exit;
    }
    $sql = "SELECT * FROM Table WHERE column_name = ?";
    $stmt = $mysqli->prepare($sql);
    $stmt->bind_param("s", $value);
    $value = "search_value";
    $stmt->execute();
    $result = $stmt->get_result();
    while ($row = $result->fetch_assoc()) {
        echo $row["column_name"];
    }
    $result->close();
    $stmt->close();
    $mysqli->close();

在prepared语句中,参数用“?”表示,使用bind_param()方法将参数绑定到语句上。

5。交易流程

MySQLi 扩展支持事务处理。事务处理可以保证MySQL数据库中操作的多条SQL语句的原子性和一致性。如果其中一条 SQL 语句失败,则整个事务将回滚。

交易流程的使用如下:

    $mysqli = new mysqli("localhost", "root", "password", "database");
    if ($mysqli->connect_errno) {
        echo "连接失败";
        exit;
    }
    $mysqli->begin_transaction();
    $sql1 = "INSERT INTO Table (column1, column2) VALUES (?, ?)";
    $stmt1 = $mysqli->prepare($sql1);
    $stmt1->bind_param("ss", $value1, $value2);
    $value1 = "value1";
    $value2 = "value2";
    $stmt1->execute();
    $stmt1->close();
    $sql2 = "UPDATE Table SET column1 = ? WHERE column2 = ?";
    $stmt2 = $mysqli->prepare($sql2);
    $stmt2->bind_param("ss", $value3, $value2);
    $value3 = "value3";
    $stmt2->execute();
    $stmt2->close();
    $mysqli->commit();
    $mysqli->close();

在事务处理中,使用begin_transaction()方法开始事务处理,使用commit()方法发送事务,如果发生错误,使用rollback()方法重放事务。

6。总结

MySQLi扩展是PHP操作MySQL数据库常用的扩展程序。提供面向过程和面向对象两种使用方式,支持预备语句和事务处理。使用MySQLi可以使MySQL数据库操作更简单、更高效、更安全。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门