PHP中使用MySQLi连接数据库的两种方法及优势详解
本文将详细介绍如何在PHP中使用 mysqli(MySQL Improved)扩展连接和操作数据库。通过函数式和面向对象两种编程范式,展示建立连接、执行SQL查询、获取结果集以及释放资源的标准操作流程。
使用目的与背景
mysqli(原称MySQL Enhanced Extension)是专为PHP设计的增强型数据库接口,旨在替代旧有的 mysql 扩展。它不仅提供了更简洁的操作方式,还支持面向对象编程接口、预处理语句(Prepared Statements)、事务处理等现代数据库特性,显著提升了代码的安全性与维护性。
准备条件
- 安装PHP运行环境,并确保服务器端已加载
mysqli扩展。 - 配置一个MySQL数据库实例,记录主机地址、用户名、密码及数据库名称。
第1步:使用函数式风格连接数据库
这是最传统的连接方式,通过内置的全局函数进行交互,适合习惯过程式编程的开发人员。
- 入口:新建
index.php文件并打开PHP标签。 - 动作:调用
mysqli_connect函数填入连接参数。 - 重要参数:主机名(如 'localhost')、用户名、密码、目标库名。
- 完成状态:成功返回 $link 对象,失败则触发错误提示并终止脚本。
复制代码
<?php
/* 连接到 MySQL 服务器 */
$link = mysqli_connect(
'localhost', /* 连接的主机地址 */
'user', /* 连接的用户名 */
'password', /* 连接密码 */
'world'); /* 默认数据库名 */
if (!$link) {
printf("无法连接到 MySQL Server. 错误代码: %s", mysqli_connect_error());
exit;
}
/* 发送查询到服务器 */
if ($result = mysqli_query($link, 'SELECT Name, Population FROM City ORDER BY Population DESC LIMIT 5')) {
print("大型城市列表如下:\n");
/* 获取查询结果 */
while ($row = mysqli_fetch_assoc($result)) {
printf("%s (%s)\n", $row['Name'], $row['Population']);
}
/* 销毁结果集并释放内存 */
mysqli_free_result($result);
}
/* 关闭数据库连接 */
mysqli_close($link);
?>
第2步:使用面向对象(OOP)风格连接数据库
利用类实例化的方式进行操作,逻辑结构清晰,是现代PHP开发的主流推荐方式。
- 入口:初始化
mysqli类的实例。 - 动作:直接调用实例属性与方法,如
$mysqli->query()。 - 重要参数:构造函数中的四个基础连接参数。
- 完成状态:成功获得
$mysqli实例对象,可连续调用其内部方法。
复制代码
<?php
/* 连接到 MySQL 服务器 */
$mysqli = new mysqli('localhost', 'user', 'password', 'world');
if (mysqli_connect_errno()) {
printf("无法连接到 MySQL Server. 错误代码: %s", mysqli_connect_error());
exit;
}
/* 发送查询到服务器 */
if ($result = $mysqli->query('SELECT Name, Population FROM City ORDER BY Population DESC LIMIT 5')) {
print("大型城市列表如下:\n");
/* 获取查询结果 */
while ($row = $result->fetch_assoc()) {
printf("%s (%s)\n", $row['Name'], $row['Population']);
}
/* 销毁结果集并释放内存 */
$result->close();
}
/* 关闭数据库连接 */
$mysqli->close();
?>
关键特性说明
除了基础的增删改查,现代版本的 mysqli 还支持高级功能:
- 预处理语句:支持绑定参数,有效防范 SQL 注入攻击。
- 多语句执行:允许在一次操作中发送多条SQL指令。
- 调试模式:提供丰富的错误日志记录方式。
以上就是关于在PHP中使用MySQLi连接数据库的详细内容,更多关于PHP高级开发的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









