📅  最后修改于: 2023-12-03 14:44:31.377000             🧑  作者: Mango
MySQLi 是 PHP 中的一个扩展,用于与 MySQL 数据库通信。它支持更多的功能和具有更好的性能,是 MySQL 扩展的替代品。
在这篇文章中,我们将介绍如何使用 PHP 中的 MySQLi 扩展来管理数据库。我们将讨论如何连接到数据库、如何执行 SQL 查询语句、如何获取结果集和如何防范 SQL 注入攻击等方面。
要连接到 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 查询语句,我们可以使用 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 注入攻击。
<?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 注入攻击。这些技巧将帮助你更好地管理数据库。