MySQL 扩展之 mysqli

介绍

MySQL 是一个流行的开源关系型数据库管理系统,广泛用于 Web 应用程序的开发中。在 PHP 中,我们可以使用多种方式与 MySQL 进行交互,其中之一就是使用 mysqli 扩展。

mysqli 扩展是 PHP 中的一个官方扩展,它提供了一组函数和方法,用于连接、查询和管理 MySQL 数据库。相比于之前的 mysql 扩展,mysqli 扩展提供了更多的功能和性能的改进。本文将介绍 mysqli 扩展的一些重要特性和常用操作。

特性

支持面向对象和过程式编程

和其他一些扩展类似,mysqli 扩展支持面向对象和过程式编程两种方式。对于面向对象编程,我们可以使用 mysqli 类进行操作;对于过程式编程,我们可以使用一组以 mysqli_ 前缀开头的函数进行操作。

安全性增强

mysqli 扩展提供了一些安全性增强的特性,例如支持预处理语句和绑定参数。通过预处理语句,我们可以先将 SQL 语句的结构发送给 MySQL 服务器,然后再绑定参数和执行语句,这样可以有效防止 SQL 注入攻击。

<?php
$mysqli = new mysqli('localhost', 'username', 'password', 'database');

$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param('i', $id);

$id = 1;
$stmt->execute();

$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    // 处理查询结果
}

$stmt->close();
$mysqli->close();
?>

支持事务

mysqli 扩展还提供了支持事务的功能。通过使用 begin_transaction()commit()rollback() 方法,我们可以在 PHP 中操作事务,保证数据库的一致性和完整性。

<?php
$mysqli = new mysqli('localhost', 'username', 'password', 'database');

$mysqli->begin_transaction();

try {
    // 执行一些数据库操作

    $mysqli->commit();
} catch (Exception $e) {
    $mysqli->rollback();
}

$mysqli->close();
?>

支持结果集处理和存储过程

mysqli 扩展提供了丰富的函数和方法用于处理查询结果集。我们可以使用 fetch_assoc()fetch_array()fetch_object() 等方法来获取查询结果的不同形式。

此外,mysqli 扩展还支持存储过程的调用和处理。我们可以使用 multi_query() 方法执行包含多个 SQL 语句的存储过程。

<?php
$mysqli = new mysqli('localhost', 'username', 'password', 'database');

// 调用存储过程
$mysqli->multi_query("CALL stored_procedure()");

do {
    if ($result = $mysqli->store_result()) {
        while ($row = $result->fetch_assoc()) {
            // 处理查询结果
        }
        $result->free();
    }
} while ($mysqli->more_results() && $mysqli->next_result());

$mysqli->close();
?>

示例

下面是一个简单的示例,演示了如何使用 mysqli 扩展连接到 MySQL 数据库,并查询并显示数据。

<?php
$mysqli = new mysqli('localhost', 'username', 'password', 'database');

if ($mysqli->connect_errno) {
    die('连接数据库失败:' . $mysqli->connect_error);
}

$result = $mysqli->query('SELECT * FROM users');
if ($result) {
    while ($row = $result->fetch_assoc()) {
        echo $row['username'] . '<br>';
    }
    $result->free();
}

$mysqli->close();
?>

总结

本文简要介绍了 mysqli 扩展的一些重要特性和常见操作,包括面向对象和过程式编程、安全性增强、事务、结果集处理和存储过程。通过这些功能,我们可以更方便地与 MySQL 数据库进行交互,并编写更安全和高效的代码。

在实际开发中,我们可以根据具体需求选择合适的编程方式和功能使用。最后提醒大家,使用 mysqli 扩展时要注意安全性,避免 SQL 注入攻击。

![