为了账号安全,请及时绑定邮箱和手机立即绑定

mysql_fetch_array,mysql_fetch_assoc,mysql_fetch

mysql_fetch_array,mysql_fetch_assoc,mysql_fetch

繁华开满天机 2019-12-04 14:58:34
这些功能非常相似:mysql_fetch_array(), mysql_fetch_assoc(), mysql_fetch_object()我最近开始使用mysql_fetch_object,因为我正在使用PHP做更多的OOP。但是人们对于哪种最佳使用方法和原因有何看法,以及最佳使用哪种方案。感谢您的想法!
查看完整描述

3 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

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_assoc,mysql_fetch_object很可能取决于您如何开发应用程序:如果到处使用对象,第二个对象可能是最合适的。


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


查看完整回答
反对 回复 2019-12-04
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

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


查看完整回答
反对 回复 2019-12-04
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

假设我们有下表


名称国家/地区代码

----- ----------

孟加拉国BD

美国普韦布洛

美国阿瓦达


$ query =“选择名称,CountryCode来自城市”;


$结果= mysqli_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"]);

}


查看完整回答
反对 回复 2019-12-04
  • 3 回答
  • 0 关注
  • 608 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信