Php mysql\u fetch\u数组、mysql\u fetch\u assoc、mysql\u fetch\u对象

Php mysql\u fetch\u数组、mysql\u fetch\u assoc、mysql\u fetch\u对象,php,mysql,arrays,oop,object,Php,Mysql,Arrays,Oop,Object,这些功能都非常相似: mysql_fetch_array(), mysql_fetch_assoc(), mysql_fetch_object() 我最近开始使用mysql\u fetch\u对象,因为我正在用PHP进行更多的面向对象编程 但人们对哪一种方法最适合使用、原因以及可能最适合使用哪一种方法的看法是什么 谢谢你的想法 将为您提供一个数组,该数组可以具有as键: 如果同时使用MYSQL\u,则列的编号和名称 列名称,使用MYSQL\u ASSOC——在本例中,使用MYSQL\u fe

这些功能都非常相似:

mysql_fetch_array(), mysql_fetch_assoc(), mysql_fetch_object()
我最近开始使用mysql\u fetch\u对象,因为我正在用PHP进行更多的面向对象编程

但人们对哪一种方法最适合使用、原因以及可能最适合使用哪一种方法的看法是什么

谢谢你的想法

将为您提供一个数组,该数组可以具有as键:

  • 如果同时使用
    MYSQL\u,则列的编号和名称
  • 列名称,使用
    MYSQL\u ASSOC
    ——在本例中,使用
    MYSQL\u fetch\u ASSOC
  • 如果使用
    MYSQL\u NUM
通过列名索引结果可能是最有用的解决方案——至少更易于使用

但是,在一种情况下,通过select子句中字段的位置索引结果很有趣:当您有多个具有相同名称或别名的列时。
在这种情况下,由于一个数组中不能有两个具有相同索引的条目,因此只能使用列名作为索引访问其中一列。
对于具有相同名称的其他列,必须使用数字索引

在这种情况下,我可能会使用
mysql\u fetch\u array
——我更喜欢在查询中使用别名,以避免这种情况——在我看来,这更清楚


将得到一个数组,列名作为键,数据作为值

其实没什么好说的


作为回报,我会给你一些东西


mysql\u fetch\u assoc
mysql\u fetch\u object
之间进行选择很可能取决于您开发应用程序的方式:如果在任何地方都使用对象,那么第二种方法可能最适合

如果使用数组作为数据容器,则可以使用第一个。

mysql\u fetch\u array()将结果行作为关联数组、数字数组或两者都提取。 它返回与获取的行相对应的字符串数组,如果没有更多行,则返回FALSE。返回数组的类型取决于$result\u type的定义方式

通过使用MYSQL_NUM,您只能获得数字索引(如$row[0]、$row等),即数字数组

通过使用MYSQL_ASSOC,您只能获得关联索引(如$row[“id”]、$row[“name”]等),即关联数组

通过使用MYSQL_BOTH(默认),您将获得一个包含关联索引和数字索引的数组。(如$row[0]、$row[“name”]等),即数字数组和关联数组

mysql\u fetch\u assoc()以关联数组的形式获取结果行。(列名作为键)

mysql\u fetch\u object()将结果行作为对象获取

它返回一个对象,该对象的属性与获取的行相对应,并将内部数据指针向前移动

对我来说,有使用的优点 mysql_fetch_assoc(),您可以使用以下数组函数 数组\u walk和uasort()。

简短说明:

mysql\u fetch\u assoc():这将获得一个关联的数据数组

mysql\u fetch\u array():返回关联元素的组合数组以及带有数字索引的数据

mysql\u fetch\u object():返回一个对象,该对象的属性与所获取的行相对应


假设我们有下表

Name CountryCode ----- ---------- Bangladesh BD Pueblo USA Arvada USA
  • mysqli\u fetch\u assoc(作为关联数组即键进行提取)

    while($row=mysqli\u fetch\u assoc($result)){
    printf(“%s(%s)\n”、$row[“Name”]、$row[“CountryCode”]);
    }

  • mysqli_fetch_数组(数字和关联)

    while($row=mysqli\u fetch\u数组($result,mysqli\u NUM)){
    printf(“%s(%s)\n)”,$row[0],$row[1]);
    }

    while($row=mysqli\u fetch\u数组($result,mysqli\u ASSOC)){
    printf(“%s(%s)\n”、$row[“Name”]、$row[“CountryCode”]);
    }


  • 根据这一点,assoc是最快的。这是一个有趣的数据,但如果您只快速查看一下图表,似乎只有>=100000的数据集才存在差异。但这只是一个糟糕的规模选择。如果详细查看这些值,则在所有大小的对象上,fetch_assoc比fetch_对象快两倍多。
     while ($obj = mysqli_fetch_object($result)) {
        printf ("%s (%s)\n", $obj->Name, $obj->CountryCode);
     }