您的位置:

学习如何使用mysqli

一、mysqli是什么

MySQLi是PHP自带的一种用于操作MySQL数据库的扩展程序,可以看成是PHP对MySQL数据库进行操作的接口。MySQLi提供了一个更加简单、面向对象的API,支持新的MySQL特性。

MySQLi扩展既提供了一个面向过程的接口,也提供了一个面向对象的接口,可以满足不同用户的需求。

二、面向过程的使用方法

首先,我们需要连接到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);

三、面向对象的使用方法

面向对象的使用方法与面向过程的使用方法类似,只不过需要先创建一个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();

四、预处理语句

预处理语句是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();

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

五、事务处理

MySQLi扩展支持事务处理。事务处理可以保证多条SQL语句操作MySQL数据库的原子性和一致性,如果其中一条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()方法回滚事务。

六、总结

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