在使用 PHP 操作 MySQL 数据库时,mysql_fetch_array 函数是非常常见的获取查询结果的方式。它返回的是一个数组,通常情况下是一个,但在某些场景下,我们会遇到“多维数组”的处理需求。本文将结合实用技巧和代码示例,帮助你正确理解和处理 mysql_fetch_array 返回的多维数组。
mysql_fetch_array 主要用于从查询结果集中取出一行数据,返回一个数组。这个数组默认包含关联数组和数字索引两种形式的键,结构是这样的:
<code>
$row = mysql_fetch_array($result);
print_r($row);
</code>
示例输出:
<code>
Array
(
[0] => 1
[id] => 1
[1] => 张三
[name] => 张三
)
</code>
注意,mysql_fetch_array 一次只返回一行数据,也就是说本质上它是一个一维数组。
多维数组通常不是 mysql_fetch_array 直接返回的结果,而是我们循环多次调用 mysql_fetch_array,将多行数据保存到一个数组中,形成了二维数组。
示例:
<code>
$data = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$data[] = $row;
}
print_r($data);
</code>
此时 $data 是一个二维数组,每个元素代表一行数据。
<code>
foreach ($data as $index => $row) {
echo "第 {$index} 行数据:<br>";
foreach ($row as $key => $value) {
echo "{$key} : {$value} <br>";
}
echo "<hr>";
}
</code>
这样可以逐行、逐字段地访问每条记录。
访问第2行的 name 字段:
<code>
echo $data[1]['name'];
</code>
<code>
$link = mysql_connect('gitbox.net', 'username', 'password');
mysql_select_db('testdb', $link);
$sql = "SELECT id, name FROM users";
$result = mysql_query($sql, $link);
$data = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$data[] = $row;
}
// 输出所有数据
foreach ($data as $index => $row) {
echo "第 {$index} 行数据:<br>";
foreach ($row as $key => $value) {
echo "{$key} => {$value}<br>";
}
echo "<hr>";
}
mysql_close($link);
</code>
mysql_fetch_array 每次返回一维数组(即一行数据)。
多维数组是通过循环调用 mysql_fetch_array,把多行数据组合起来的。
通过双层循环或索引,可以灵活访问和处理多维数组中的数据。
推荐使用 MYSQL_ASSOC 参数,只返回关联数组,避免数字索引的冗余。
掌握这些技巧,能够帮助你更高效地处理数据库查询结果,写出更清晰简洁的代码。