📅  最后修改于: 2023-12-03 15:17:48.956000             🧑  作者: Mango
本文将介绍如何使用 mysqli_connect 函数和准备语句(SQL)来连接 MySQL 数据库并执行 SQL 查询。准备语句是一种预处理 SQL 查询的方式,它可以避免 SQL 注入攻击,提高查询性能,同时还可以实现代码复用。最后,我们将给出使用 mysqli_connect 和准备语句(SQL)的示例代码。
mysqli_connect 是 PHP 中连接 MySQL 数据库的内置函数,其语法如下:
mysqli mysqli_connect(string $host, string $username, string $password, string $dbname, int $port = 3306, string $socket = '')
其中,$host 表示 MySQL 数据库服务器的主机名或 IP 地址,$username 表示 MySQL 数据库用户名,$password 表示 MySQL 数据库密码,$dbname 表示要连接的 MySQL 数据库名称,$port 表示 MySQL 数据库服务器监听的端口号(可选,默认为 3306),$socket 表示 MySQL 数据库服务器的 UNIX 套接字(可选,默认为空)。
mysqli_connect 函数返回一个 mysqli 对象,该对象包含了与 MySQL 数据库的连接,并可以用来执行 SQL 查询。
准备语句是一种预处理 SQL 查询的方式,它可以避免 SQL 注入攻击以及提高查询性能。准备语句的一般流程如下:
准备 SQL 查询语句,其中可能包含未知的参数,使用占位符 ? 代替。
创建一个 mysqli_stmt 对象并绑定 SQL 查询语句。
绑定 SQL 查询语句中的参数和类型。
执行 SQL 查询,并传递参数值。
获取查询结果。
使用准备语句的好处是可以将 SQL 查询语句和参数绑定在一起,这样可以避免 SQL 注入攻击,提高查询性能,同时还可以实现代码复用。
以下示例演示了如何使用 mysqli_connect 和准备语句(SQL)来连接 MySQL 数据库并执行 SQL 查询。
<?php
// 连接 MySQL 数据库
$conn = mysqli_connect('localhost', 'root', 'password', 'testdb');
// 准备 SQL 查询语句
$sql = "SELECT * FROM users WHERE age > ?";
// 创建 mysqli_stmt 对象并绑定 SQL 查询语句
$stmt = mysqli_stmt_init($conn);
mysqli_stmt_prepare($stmt, $sql);
// 绑定 SQL 查询语句中的参数和类型
$age = 18;
mysqli_stmt_bind_param($stmt, 'i', $age);
// 执行 SQL 查询,并传递参数值
mysqli_stmt_execute($stmt);
// 获取查询结果
$result = mysqli_stmt_get_result($stmt);
while ($row = mysqli_fetch_assoc($result)) {
echo "id: {$row['id']}, name: {$row['name']}, age: {$row['age']}\n";
}
// 关闭 mysqli_stmt 对象和 MySQL 数据库连接
mysqli_stmt_close($stmt);
mysqli_close($conn);
?>
在上述示例代码中,我们首先使用 mysqli_connect 函数连接 MySQL 数据库,然后准备了一个 SQL 查询语句"SELECT * FROM users WHERE age > ?",该查询语句中的参数使用占位符 ? 代替。接着,我们创建了一个 mysqli_stmt 对象,并使用 mysqli_stmt_prepare 函数绑定了 SQL 查询语句。然后,我们使用 mysqli_stmt_bind_param 函数绑定了 SQL 查询语句中的参数和类型,并执行了 SQL 查询。最后,我们通过 mysqli_stmt_get_result 函数获取查询结果,并使用 mysqli_fetch_assoc 函数遍历结果集打印出每一行数据。最后,我们还需要关闭 mysqli_stmt 对象和 MySQL 数据库连接。
本文介绍了如何使用 mysqli_connect 函数和准备语句(SQL)来连接 MySQL 数据库并执行 SQL 查询。准备语句是一种预处理 SQL 查询的方式,它可以避免 SQL 注入攻击,提高查询性能,同时还可以实现代码复用。我们提供了示例代码作为参考,希望对读者有所帮助。