一、函数介绍
mysql_fetch_assoc
是一种用于检索 MySQL 查询结果的函数。该函数返回结果集中下一行作为关联数组。数组的键名是字段名,数组的键值是字段值。
该函数的参数是先前使用 mysql_query()
执行的结果集标识符。
while ($row = mysql_fetch_assoc($result)) {
echo $row["id"] . ":" . $row["name"]. "<br>";
}
二、和 mysql_fetch_array 比较
在使用 mysql_fetch_assoc
之前,您需要了解它与 mysql_fetch_array
之间的区别。mysql_fetch_array
函数返回结果集中的下一行,作为以数字和/或关联索引的数组。然而,与 mysql_fetch_assoc
不同,mysql_fetch_array
返回两种类型的数组:关联数组或数字数组,而 mysql_fetch_assoc
只返回关联数组。
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
printf("ID: %s Name: %s", $row[0], $row[1]);
}
三、以性能为角度
从性能的角度来看,mysql_fetch_assoc
在读取大型 MySQL 查询结果时可能会更快。由于 mysql_fetch_array
返回两种类型的数组,因此在解释结果集时,需要更多的处理和内存来存储数字和关联索引。
在 MySQLI 中,可以使用 mysqli_fetch_assoc
函数来达到相同的效果。
while ($row = mysqli_fetch_assoc($result)) {
echo $row["id"] . ":" . $row["name"]. "<br>";
}
四、对没有结果的查询的处理
在使用 mysql_fetch_assoc
时,您需要考虑到查询没有结果的情况。如果一个查询没有结果,mysql_fetch_assoc
将返回 FALSE(而不是数组),因此您需要使用条件语句来确保结果集中有数据可用。
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
echo $row["id"] . ":" . $row["name"]. "<br>";
}
}
else {
echo "No results found";
}
五、在循环中使用 mysql_fetch_assoc
在使用 mysql_fetch_assoc
时,通常会在 while
循环中使用它。在循环迭代中,每次调用 mysql_fetch_assoc
都会将结果集中的下一行返回为关联数组,直到没有更多的行可用为止。
while ($row = mysql_fetch_assoc($result)) {
echo $row["id"] . ":" . $row["name"]. "<br>";
}
六、总结
mysql_fetch_assoc
函数允许您以关联数组的形式方便地检索 MySQL 查询的结果集。您需要注意的一些重要的方面包括与 mysql_fetch_array
之间的区别、对没有结果的查询的处理和在循环中使用 mysql_fetch_assoc
。