在使用 PHP 与 MySQL 进行交互时,获取查询结果是常见且重要的一步。mysql_fetch_array() 是 PHP 中用于获取查询结果的一个函数,它可以将结果作为关联数组、数字索引数组,或者两者兼有的形式返回,方便我们在后续程序中进行处理。
注意:mysql_fetch_array() 属于 mysql 扩展,该扩展自 PHP 7.0 起已被废弃,建议新项目使用 mysqli 或 PDO_MySQL。本文主要针对维护旧系统或学习目的。
在开始之前,我们需要连接到 MySQL 数据库并选择一个数据库:
<code> <?php // 连接数据库 $conn = mysql_connect("localhost", "username", "password");if (!$conn) {
die("连接失败: " . mysql_error());
}
// 选择数据库
mysql_select_db("test_db", $conn);
?>
</code>
执行一条简单的 SQL 查询,获取用户表中的所有用户信息:
<code> <?php $sql = "SELECT id, name, email FROM users"; $result = mysql_query($sql, $conn);if (!$result) {
die("查询失败: " . mysql_error());
}
?>
</code>
接下来,我们使用 mysql_fetch_array() 获取查询结果:
<code> <?php while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { echo "ID: " . $row["id"] . "<br>"; echo "姓名: " . $row["name"] . "<br>"; echo "邮箱: " . $row["email"] . "<br><br>"; } ?> </code>上面的代码中,我们传入了 MYSQL_ASSOC 常量,它表示我们希望以关联数组的方式获取数据。这意味着我们可以通过字段名来访问每一列的值。
mysql_fetch_array() 的第二个参数可以设置为以下几种模式:
MYSQL_ASSOC:只返回关联数组。
MYSQL_NUM:只返回数字索引数组。
MYSQL_BOTH(默认):同时返回关联和数字索引数组。
示例(同时获取关联和索引):
<code> <?php while ($row = mysql_fetch_array($result)) { echo $row[0]; // 使用数字索引 echo $row["name"]; // 使用字段名 } ?> </code>下面是一个完整的使用流程:
<code> <?php // 连接数据库 $conn = mysql_connect("localhost", "root", "password"); if (!$conn) { die("连接失败: " . mysql_error()); }mysql_select_db("test_db", $conn);
// 查询数据
$sql = "SELECT id, name, email FROM users";
$result = mysql_query($sql, $conn);
// 输出结果
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "<p>";
echo "用户ID: " . $row["id"] . "<br>";
echo "用户名: " . $row["name"] . "<br>";
echo "用户邮箱: " . $row["email"] . "<br>";
echo "资料链接: <a href='https://gitbox.net/user/" . $row["id"] . "'>查看</a>";
echo "</p>";
}
// 关闭连接
mysql_close($conn);
?>
</code>
mysql_fetch_array() 提供了一种灵活的方式来获取 MySQL 查询结果。虽然它已经不推荐在新项目中使用,但了解其工作方式对于理解 PHP 和数据库交互仍有帮助。在维护旧系统时,掌握如何使用它非常必要。
在开发新的系统时,推荐使用 mysqli_fetch_assoc() 或 PDOStatement::fetch() 来代替。无论使用哪种方式,理解底层的查询逻辑永远是构建可靠应用的基础。