zoukankan      html  css  js  c++  java
  • [转]mysql_fetch_row,mysql_fetch_array,mysql_fetch_object,mysql_fetch_assoc的区别

     

    一直以来,有很多初学者搞不懂这些Mysql中从查询结果集中取得数据的函数之间有什么区别,今天我就来秀一把,在秀之前先给大家一段PHP实例

    1 <?php
    2 $link=mysql_connect('localhost','root',”);
    3 mysql_select_db('abc',$link);
    4 $sql= “select * from book”;
    5 $result=mysql_query($sql);
    6 while($row=mysql_fetch_row($result))
    7 {
    8 echo$row['cid'].'::'.$row[1].'<br>';
    9 }
    10 $result=mysql_query($sql);
    11 while($row=mysql_fetch_array($result))
    12 {
    13 echo$row['cid'].'::'.$row[1].'<br>';
    14 }
    15 $result=mysql_query($sql);
    16 while($row=mysql_fetch_object($result))
    17 {
    18 echo$row->cid.'::'.$row->title.<br>”;
    19 }
    20 $result=mysql_query($sql);
    21 while($row=mysql_fetch_assoc($result))
    22 {
    23 echo$row['cid'].'::'.$row[1].'<br>';
    24 }
    25 ?>

    分析:
    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中得到数据库中的一行记录。
    不用类可这样实现

    1 $conn=@mysql_connect($host,$user,$pass);
    2 @mysql_select_db($database,$conn);
    3 $query=mysql_query($sql);
    4 while($row=mysql_fetch_array($query)){
    5 $rows[]=$row;
    6 }
  • 相关阅读:
    84. Largest Rectangle in Histogram (Solution 2)
    84. Largest Rectangle in Histogram (Solution 1)
    73. Set Matrix Zeroes
    【JavaScript】Symbol 静态方法
    【JavaScript】Date
    【JavaScript】Math
    725. Split Linked List in Parts把链表分成长度不超过1的若干部分
    791. Custom Sort String字符串保持字母一样,位置可以变
    508. Most Frequent Subtree Sum 最频繁的子树和
    762. Prime Number of Set Bits in Binary Representation二进制中有质数个1的数量
  • 原文地址:https://www.cnblogs.com/xcp19870712/p/2295953.html
Copyright © 2011-2022 走看看