2009-10-08 56 views
13

的功能都非常相似:mysql_fetch_array,mysql_fetch_assoc,mysql_fetch_object

mysql_fetch_array(), mysql_fetch_assoc(), mysql_fetch_object() 

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

但什么是人民的意见在哪一个是最好用,为什么,也许他们是最好的,其场景中使用。

感谢您的想法!

+2

据此,assoc最快。 http://www.spearheadsoftwares.com/tutorials/php-performance-benchmarking/50-mysql-fetch-assoc-vs-mysql-fetch-array-vs-mysql-fetch-object – Erick 2013-07-21 05:40:22

回答

14

mysql_fetch_array将让你的数组,可以有任意键:如果使用MYSQL_BOTH

  • 列名,使用MYSQL_ASSOC

    • 数字和列的名字, - 在这种情况下,你会得到您使用mysql_fetch_assoc
    • 只有数字时,你得到同样的事情(这取决于在查询列的顺序),如果使用MYSQL_NUM

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

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

    这种情况可能是我使用mysql_fetch_array的唯一情况 - 我宁愿在我的查询中使用别名,以避免出现这种情况 - 在我看来,这更清楚。


    mysql_fetch_assoc会给你一个数组,列名作为键,数据作为值。

    实际上并不多说。


    mysql_fetch_object会为您提供objetcs的回报。


    mysql_fetch_assocmysql_fetch_object之间选择最有可能取决于你如何开发应用程序:如果使用对象无处不在,第二个可能是最合适的。

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

  • 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()。

    0

    简短说明:

    mysql_fetch_assoc():这让你的数据的关联数组。

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

    mysql_fetch_object():返回一个对象,该对象的属性对应于获取的行。

    Source