这些功能非常相似:
mysql_fetch_array(), mysql_fetch_assoc(), mysql_fetch_object()
我最近开始使用mysql_fetch_object,因为我正在用PHP做更多的OOP。
但是人们对哪一个最好使用以及为什么会有什么看法,以及可能最适合使用哪种情况。
感谢您的想法!
答案 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_assoc
和mysql_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():返回一个对象,其属性与获取的行相对应。
答案 3 :(得分:0)
假设我们有下表
Name CountryCode ----- ---------- Bangladesh BD Pueblo USA Arvada USA
$ query =“选择名称,国家/地区代码来自城市”;
$ result = mysqli_query($ connection,$ query)
mysqli_fetch_object (数据可以作为对象获取)
while ($obj = mysqli_fetch_object($result)) {
printf ("%s (%s)\n", $obj->Name, $obj->CountryCode);
}
mysqli_fetch_assoc (作为关联数组(即键)获取)
while ($row = mysqli_fetch_assoc($result)) {
printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]);
}
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"]);
}