Heim  >  Artikel  >  php教程  >  【转】mysql_fetch_row , mysql_fetch_array , mysql_fetch_assoc 的区别

【转】mysql_fetch_row , mysql_fetch_array , mysql_fetch_assoc 的区别

WBOY
WBOYOriginal
2016-10-08 16:04:46993Durchsuche
<span style="color: #000000;">php
</span><span style="color: #800080;">$link </span>= <span style="color: #008080;">mysql_connect</span>('localhost', 'root', <span style="color: #000000;">”);
</span><span style="color: #008080;">mysql_select_db</span>('abc', <span style="color: #800080;">$link</span><span style="color: #000000;">);
</span><span style="color: #800080;">$sql</span> = “select *<span style="color: #000000;"> from book”;
</span><span style="color: #800080;">$result</span> = <span style="color: #008080;">mysql_query</span>(<span style="color: #800080;">$sql</span><span style="color: #000000;">);
</span><span style="color: #0000ff;">while</span>(<span style="color: #800080;">$row</span> = <span style="color: #008080;">mysql_fetch_row</span>(<span style="color: #800080;">$result</span><span style="color: #000000;">))
{
  </span><span style="color: #0000ff;">echo</span> <span style="color: #800080;">$row</span>['cid'].'::'.<span style="color: #800080;">$row</span>[1].'<br>'<span style="color: #000000;">;
}
</span><span style="color: #800080;">$result</span> = <span style="color: #008080;">mysql_query</span>(<span style="color: #800080;">$sql</span><span style="color: #000000;">);
</span><span style="color: #0000ff;">while</span>(<span style="color: #800080;">$row</span> = <span style="color: #008080;">mysql_fetch_array</span>(<span style="color: #800080;">$result</span><span style="color: #000000;">))
{
  </span><span style="color: #0000ff;">echo</span> <span style="color: #800080;">$row</span>['cid'].'::'.<span style="color: #800080;">$row</span>[1].'<br>'<span style="color: #000000;">;
}
</span><span style="color: #800080;">$result</span> = <span style="color: #008080;">mysql_query</span>(<span style="color: #800080;">$sql</span><span style="color: #000000;">);
</span><span style="color: #0000ff;">while</span>(<span style="color: #800080;">$row</span> = <span style="color: #008080;">mysql_fetch_object</span>(<span style="color: #800080;">$result</span><span style="color: #000000;">))
{
  </span><span style="color: #0000ff;">echo</span> <span style="color: #800080;">$row</span>->cid.'::'.<span style="color: #800080;">$row</span>->title.”<br><span style="color: #000000;">”;
}
</span><span style="color: #800080;">$result</span> = <span style="color: #008080;">mysql_query</span>(<span style="color: #800080;">$sql</span><span style="color: #000000;">);
</span><span style="color: #0000ff;">while</span>(<span style="color: #800080;">$row</span> = <span style="color: #008080;">mysql_fetch_assoc</span>(<span style="color: #800080;">$result</span><span style="color: #000000;">))
{
  </span><span style="color: #0000ff;">echo</span> <span style="color: #800080;">$row</span>['cid'].'::'.<span style="color: #800080;">$row</span>[1].'<br>'<span style="color: #000000;">;
}
</span>?>

 分析:
mysql_fetch_row,这个函数是从结果集中取一行作为枚举数据,从和指定的结果标识关联的结果集中取得一行数据并作为数组返回。每个结果的列储存在一个数组的单元中,偏移量从 0 开始。 注意,这里是从0开始偏移,也就是说不能用字段名字来取值,只能用索引来取值,所以如下代码是取不到值的:
  while($row = mysql_fetch_row($res)){
    echo $row['cid'].'::'.$row[1].”;
  } //这里的$row['cid'] 取不到值。
mysql_fetch_array,从结果集中取得一行作为关联数组,或数字数组,或二者兼有,除了将数据以数字索引方式储存在数组中之外,还可以将数据作为关联索引储存,用字段名作为键名。 也就是说他得到的结果像数组一样,可以用key或者索引来取值,所以
  while($row = mysql_fetch_array($res)){
    echo $row['cid'].'::'.$row[1].”;
  }//这里$row['cid'],$row[1]都能得到相应的值。
mysql_fetch_object,顾名思义,从结果集中取得一行作为对象,并将字段名字做为属性。所以只有这样才能取到值
  while($row = mysql_fetch_object($res)){
    echo $row->cid.'::'.$row->title.”";
  }
mysql_fetch_assoc,从结果集中取得一行作为关联数组,也就是说这个函数不能像mysql_fetch_row那样用索引来取值,只能用字段名字来取,所以
  while($row = mysql_fetch_assoc($res)){
    echo $row['cid'].'::'.$row[1].”;
  } //$row[1]这样是取不到值的
补充一点:
mysql_fetch_array函数是这样定义的:array mysql_fetch_array (resource result [, int result_type]),返回根据从结果集取得的行生成的数组,如果没有更多行则返回 FALSE。
mysql_fetch_array() 中可选的第二个参数 result_type 是一个常量,可以接受以下值:MYSQL_ASSOC,MYSQL_NUM 和 MYSQL_BOTH。其中:
1、mysql_fetch_assoc($result) == mysql_fetch_array($result, MYSQL_ASSOC);
2、mysql_fetch_row($result) == mysql_fetch_array($result, MYSQL_NUM);
所以mysql_fetch_array()函数在某种程度上可以算是mysql_fetch_row()与 mysql_fetch_assoc()的集合。另外,mysql_fetch_array()另外还有MYSQL_BOTH参数,将得到一个同时包含关 联和数字索引的数组。
在来说句 $row = $db->fetch_array($query);
$db是人数据库操作类,$db->fetch_array($query),fetch_array($query)是那个db类里的方法,$row = $db->fetch_array($query)这句的意思是从记录集$query中得到数据库中的一行记录。 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn