mysqli
是 PHP 中的一个扩展,用于与 MySQL 数据库进行交互。它提供了面向对象和过程化的 API,使得开发者可以方便地执行 SQL 查询、管理连接和处理结果集。
mysqli
比早期的 mysql
扩展更快,因为它使用了 MySQL 的新协议。mysqli
会随着 PHP 版本的更新而不断改进和增强。mysqli
广泛应用于各种需要与 MySQL 数据库交互的 PHP 项目中,包括但不限于:
mysqli_connect(): (HY000/1045): Access denied for user 'username'@'localhost' (using password: YES)
原因:用户名或密码错误,或者该用户没有权限访问数据库。
解决方法:
my.cnf
或 my.ini
),确保没有限制本地连接。$conn = mysqli_connect("localhost", "username", "password", "database");
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
mysqli::query(): The server requested authentication method unknown to the client [caching_sha2_password]
原因:MySQL 8.0 及以上版本默认使用 caching_sha2_password
身份验证插件,而 mysqli
扩展可能不支持该插件。
解决方法:
mysql_native_password
。mysqli
扩展到支持 caching_sha2_password
的版本。ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;
mysqli::prepare(): Couldn't fetch mysqli_stmt
原因:可能是由于之前的数据库操作没有正确关闭连接或语句。
解决方法:
mysqli_stmt
后调用 mysqli_stmt_close()
关闭语句。mysqli
连接后调用 mysqli_close()
关闭连接。$stmt = $conn->prepare("SELECT * FROM table WHERE id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
$result = $stmt->get_result();
// 处理结果集
$stmt->close();
$conn->close();
通过以上信息,您可以更好地理解 mysqli
的基础概念、优势、类型和应用场景,并能够解决一些常见的错误信息。
领取专属 10元无门槛券
手把手带您无忧上云