PHP连接MySQL数据库的三种方法及数据查询指南

叶初
叶初
发布时间:2026-10-14| 4人浏览过
原创

在PHP开发中,连接数据库并提取数据是核心技能。本文详细解析使用原生函数、mysqli对象和PDO三种方式建立MySQL连接的步骤,并重点演示如何通过不同方法(如 fetch_row)准确获取查询返回的数据结构。

原生方式连接与数据提取

早期的PHP版本常使用 mysql_connect 系列函数进行数据库交互。虽然现代PHP已不推荐此方式,但理解其逻辑有助于把握基础概念。操作流程分为连接选择数据库、执行查询及提取结果三个阶段。

第1步:连接数据库与选择库

首先通过 mysql_connect 建立会话,并使用 mysql_select_db 指定目标数据库。为保持代码健壮性,通常结合错误控制运算符 @ 屏蔽系统默认报错,并通过 die() 输出自定义提示信息,便于排查连接失败原因。

$con = @mysql_connect($dbhostip, $username, $userpassword) or die("Unable to connect to the MySQL!");
$db = mysql_select_db($dbdatabasename, $con);

第2步:执行查询语句

使用 mysql_query 发送SQL指令。对于 SELECT、SHOW 等带有返回值的语句,成功时返回结果资源标识,失败则返回 FALSE;而对于 INSERT、DELETE 等无返回结果的语句,仅返回布尔值表示成功与否。

$qres = mysql_query("SELECT id,GoodsName FROM user");

第3步:提取结果集

查询成功后,需将资源转换为具体数据。根据需求可选择以下三种函数:

  • mysql_fetch_row($result):以索引数组形式返回当前行,不包含字段名键值。
  • mysql_fetch_assoc($result):以关联数组形式返回,键名为字段名称。
  • mysql_fetch_array($result):同时包含索引和关联两种键值。

若需提取多条记录,可通过循环实现。以下是提取所有行并存入数组的逻辑,同时配合 mysql_close 释放连接:

// 提取一条数据示例
$row = mysql_fetch_row($qres);

// 提取多条记录示例
$reslist = array();
$i = 0;
while ($row = mysql_fetch_row($qres)) {
    $reslist[$i] = $row;
    $i++;
}
mysql_close($con);

在实际操作中,可以通过观察返回数组的结构来区分上述三种方法的效果。例如,当使用 mysql_fetch_row 时,输出结果仅显示数据值,没有对应的字段键名:

而使用 mysql_fetch_assoc 时,返回的结果清晰地展示了键值对映射关系:

如果是 mysql_fetch_array,则体现了前两者的综合特性:

面向对象形式:Mysqli扩展

Mysqli 是MySQL的官方扩展,支持面向对象编程风格。相比原生函数,它提供了更清晰的实例化接口和更好的安全性。

$db = new mysqli($dbhostip, $username, $userpassword, $dbdatabasename);

if (mysqli_connect_error()) { 
    echo 'Could not connect to database.'; 
    exit;
}

$result = $db->query("SELECT id,GoodsName FROM user");
$row = $result->fetch_row();

在该模式下,首先实例化 mysqli 对象,随后通过 query 方法执行SQL,最后调用对象的 fetch_row 或其他相关方法获取数据。这种方式同样适用于需要处理复杂数据库交互的场景。

通用方案:PDO数据库对象

PDO(PHP Database Objects)提供了一种统一的接口,使得同一段代码能够适配多种数据库系统(如SQLite3、PostgreSQL等),只需修改连接源信息即可。

配置不同数据库的连接源

PDO的优势在于其灵活性。通过定义不同的数据源名称(DSN),可以无缝切换后端存储:

连接MySQL:

$dsn = 'mysql:host=' . $dbhost . ';dbname=' . $dbdatabase . ';';
$dbh = new PDO($dsn, $username, $userpass);

连接SQLite3:

$dsn = 'sqlite3:"D:\sqlite\user.db"';
$dbh = new PDO($dsn);

连接PostgreSQL:

$dsn = 'pgsql:host=' . $dbhost . ' port=5432 dbname=' . $dbdatabase . ' user=' . $username . ' password=' . $userpass;
$dbh = new PDO($dsn);

执行标准操作

无论后端是什么数据库,获取数据的核心逻辑保持一致。使用 query 执行语句后,通过 fetch 方法提取数据:

$stmt = $dbh->query('SELECT id,name FROM user');
$row = $stmt->fetch();

这种抽象层设计极大地简化了多数据库环境下的代码维护工作,是构建跨平台应用的首选方案。

以上就是PHP连接MySQL数据库并进行数据查询的详细内容,更多关于PHP基础教程的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。