📜  MySQLi-管理(1)

📅  最后修改于: 2023-12-03 14:44:31.377000             🧑  作者: Mango

MySQLi-管理

MySQLi 是 PHP 中的一个扩展,用于与 MySQL 数据库通信。它支持更多的功能和具有更好的性能,是 MySQL 扩展的替代品。

在这篇文章中,我们将介绍如何使用 PHP 中的 MySQLi 扩展来管理数据库。我们将讨论如何连接到数据库、如何执行 SQL 查询语句、如何获取结果集和如何防范 SQL 注入攻击等方面。

连接 MySQL 数据库

要连接到 MySQL 数据库,我们可以使用 mysqli_connect() 函数。这个函数需要四个参数,分别是 数据库地址、用户名、密码 和 数据库名。如果连接成功,这个函数将返回一个连接对象,否则返回 false。

<?php
// 配置数据库连接信息
$host = 'localhost';  // 数据库地址
$user = 'user';       // 用户名
$password = 'password'; // 密码
$dbname = 'database'; // 数据库名

// 连接到数据库
$conn = mysqli_connect($host, $user, $password, $dbname);

// 判断连接是否成功
if (!$conn) {
    die("连接失败: " . mysqli_connect_error());
}
执行 SQL 查询语句

一旦连接到数据库,我们可以执行 SQL 查询语句。为了执行 SQL 查询语句,我们可以使用 mysqli_query() 函数。这个函数需要使用连接对象和 SQL 查询字符串作为参数。

<?php
// 查询数据库
$sql = 'SELECT * FROM users';
$result = mysqli_query($conn, $sql);

if ($result) {
    // 查询成功,处理查询结果集
    while ($row = mysqli_fetch_assoc($result)) {
        echo $row['username'] . '<br>';
    }
} else {
    // 查询出错,输出错误信息
    echo mysqli_error($conn);
}

// 释放查询结果集
mysqli_free_result($result);
获取结果集

当查询成功之后,我们需要从结果集中获取数据。mysqli_fetch_assoc() 函数可以用来获取结果集的关联数组。这个函数需要使用结果集对象作为参数,并将关联数组返回。

<?php
// 查询数据库
$sql = 'SELECT * FROM users';
$result = mysqli_query($conn, $sql);

if ($result) {
    // 查询成功,处理查询结果集
    while ($row = mysqli_fetch_assoc($result)) {
        echo $row['username'] . '<br>';
    }
} else {
    // 查询出错,输出错误信息
    echo mysqli_error($conn);
}

// 释放查询结果集
mysqli_free_result($result);
防范 SQL 注入攻击

在使用 SQL 查询语句时,我们必须小心 SQL 注入攻击。为了避免 SQL 注入攻击,我们需要对用户输入进行校验。可以使用预处理语句来提供完美的安全性,防止 SQL 注入攻击。

<?php
// 效验用户输入
$username = mysqli_real_escape_string($conn, $_POST['username']);
$password = mysqli_real_escape_string($conn, $_POST['password']);

// 预处理语句
$stmt = mysqli_prepare($conn, 'SELECT * FROM users WHERE username = ? AND password = ?');
if ($stmt) {
    // 绑定参数
    mysqli_stmt_bind_param($stmt, 'ss', $username, $password);

    // 执行查询
    mysqli_stmt_execute($stmt);

    // 获取查询结果
    $result = mysqli_stmt_get_result($stmt);

    if ($result) {
        // 查询成功,处理查询结果集
        while ($row = mysqli_fetch_assoc($result)) {
            echo $row['username'] . '<br>';
        }
    } else {
        // 查询出错,输出错误信息
        echo mysqli_error($conn);
    }

    // 释放查询结果集
    mysqli_free_result($result);

    // 关闭预处理语句
    mysqli_stmt_close($stmt);
}
总结

MySQLi 是 PHP 中用来与 MySQL 数据库通信的扩展。在本文中,我们介绍了如何连接到数据库、如何执行 SQL 查询语句、如何获取结果集和如何防范 SQL 注入攻击。这些技巧将帮助你更好地管理数据库。