mysql_fetch_array,mysql_fetch_assoc,mysql_fetch_object

时间:2009-10-08 10:04:19

标签: php mysql arrays oop object

这些功能非常相似:

mysql_fetch_array(), mysql_fetch_assoc(), mysql_fetch_object()

我最近开始使用mysql_fetch_object,因为我正在用PHP做更多的OOP。

但是人们对哪一个最好使用以及为什么会有什么看法,以及可能最适合使用哪种情况。

感谢您的想法!

4 个答案:

答案 0 :(得分:14)

mysql_fetch_array将为您提供一个可以作为键的数组:

  • 如果使用MYSQL_BOTH
  • ,则列数和名称
  • 列名称,使用MYSQL_ASSOC - 在这种情况下,您将获得使用mysql_fetch_assoc
  • 时获得的相同内容
  • 仅使用MYSQL_NUM
  • 编号(取决于查询中列的顺序)

获取列名称索引的结果可能是最有用的解决方案 - 至少更容易使用。

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

这种情况可能是我使用mysql_fetch_array的唯一情况 - 而我更喜欢在我的查询中使用别名,以避免这种情况 - 在我看来,它更清楚。


mysql_fetch_assoc将为您提供一个数组,其中列名称为键,数据为值。

实际上并不多说。


mysql_fetch_object会让你获得反对意见。


mysql_fetch_assocmysql_fetch_object之间进行选择最可能取决于您如何开发应用程序:如果在任何地方使用对象,第二个可能是最适合的。

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

答案 1 :(得分:1)

mysql_fetch_array()将结果行提取为关联数组,数字数组或两者。 它返回一个与获取的行对应的字符串数组,如果没有更多的行,则返回FALSE。返回数组的类型取决于$ result_type的定义方式。

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

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

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

mysql_fetch_assoc()将结果行作为关联数组提取。 (列名为键)。

mysql_fetch_object()将结果行作为对象提取。

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

对我来说,有使用的优点 mysql_fetch_assoc()在于你可以使用诸如的数组函数 array_walk和uasort()。

答案 2 :(得分:0)

简短说明:

mysql_fetch_assoc():这会为您提供一个关联的数据数组。

mysql_fetch_array():返回关联元素的组合数组以及带数字索引的数据。

mysql_fetch_object():返回一个对象,其属性与获取的行相对应。

Source

答案 3 :(得分:0)

假设我们有下表

Name      CountryCode
-----     ----------
Bangladesh  BD
Pueblo     USA
Arvada     USA

  

$ query =“选择名称,国家/地区代码来自城市”;

     

$ result = mysqli_query($ connection,$ query)

  1. mysqli_fetch_object (数据可以作为对象获取)

     while ($obj = mysqli_fetch_object($result)) {
        printf ("%s (%s)\n", $obj->Name, $obj->CountryCode);
     }
    
  2. mysqli_fetch_assoc (作为关联数组(即键)获取)

    while ($row = mysqli_fetch_assoc($result)) { printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]); }

  3. mysqli_fetch_array (数字和关联二者)

    while ($row = mysqli_fetch_array($result, MYSQLI_NUM)) { printf("%s (%s)\n", $row[0], $row[1]); }

    while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) { printf("%s (%s)\n", $row["Name"], $row["CountryCode"]); }