php mysql_fetch_array与mysql_fetch_assoc区别

一直以来对这两个函数的区别很模糊,只知道mysql_fetch_assooc()可以去除结果集中的重复值,在实际应用中一般都用mysql_fetch_assoc(),今天想到了这两个函数索性就查了下他们的区别,进一步对其加深下了解,mysql_fetch_assoc() 函数从结果集中取得一行作为关联数组,返回根据从结果集取得的行生成的关联数组,如果没有更多行,则返回 false,mysql_fetch_array() 是 mysql_fetch_row() 的扩展版本,除了将数据以数字索引方式储存在数组中之外,还可以将数据作为关联索引储存,

用字段名作 为键名,如果结果中的两个或以上的列具有相同字段名,最后一列将优先,要访问同名的其它列,必须用该列 的数字索引或给该列起个别名,对有别名的列,不能再用原来的列名访问其内容(本例中的 'field'), mysql_fetch_array -- 从结果集中取得一行作为关联数组,或数字数组,或二者兼有.

注释:mysql_fetch_assoc() 和用 mysql_fetch_array() 加上第二个可选参数 MYSQL_ASSOC 完全相同,它仅仅返回关联数组,这也是 mysql_fetch_array() 初始的工作方式,即:mysql_fetch_array($result,'MYSQL_ASSOC')与mysql_fetch_assoc($result)返回结果相同.

提示:如果在关联索引之外还需要数字索引,用 mysql_fetch_array()。

注释:本函数返回的字段名是区分大小写的。

mysql_fetch_assoc 得到的是关联数组。

mysql_fetch_array 可以得到关联数组也可以得到索引数组,也可以二者都有。

下面以一个例子进行说明它们的区别:

假如从数据库取出一个用户的用户名和密码

username password

test 123456

用assoc 结果是array([username]=>'test',[password]=>'123456')

用array 根据参数不同结果可能是以下三种之一

  1. array([username]=>'test',[password]=>'123456')
  2. array([0]=>'test',[1]=>'123456')
  3. array([username]=>'test',[password]=>'123456',[0]=>'test',[1]=>'123456')

提示和注释

注释:mysql_fetch_assoc() 和用 mysql_fetch_array() 加上第二个可选参数 MYSQL_ASSOC 完全相同。它仅仅返回关联数组。这也是 mysql_fetch_array() 初始的工作方式。

提示:如果在关联索引之外还需要数字索引,用 mysql_fetch_array()。

注释:本函数返回的字段名是区分大小写的