何时以及为何使用mysqli_fetch_row,mysqli_fetch_object,mysqli_fetch_assoc,mysqli_fetch_array

时间:2013-11-28 08:27:09

标签: php mysql mysqli fetch

我以某种方式理解mysqli_fetch_rowmysqli_fetch_objectmysqli_fetch_assocmysqli_fetch_array之间的差异。

我的问题是它们是否如此相似(如果它们与许多主题实际上几乎相同)我们应该使用哪些? 我们为什么要使用首选的,并且有一些性能差异?

我读过一些人说永远不要使用mysqli_fetch_array。我很迷惑。我现在正在阅读一些PHP书籍,所有的例子都包括它。如果这是不正确的,我最好在锻炼时停止使用它并使用其他你可以解释和推荐的东西吗?

我还读到这些是平等的:

mysqli_fetch_array( $result, MYSQLI_ASSOC ) = mysqli_fetch_assoc( $result ) 
mysqli_fetch_array( $result, MYSQLI_NUM ) = mysqli_fetch_row( $result )
mysqli_fetch_array ( $result ) = mysqli_fetch_assoc( $result ) + mysqli_fetch_row( $result )

如果它们与概念相同,是否存在性能差异?我们应该使用哪个?差异是为了获得更好的编程习惯,以帮助开发人员一起使用以便于工作吗?

我读过“首先PHP和MySQL(一个关注大脑的指南)”和“可视化快速指南PHP 5高级”。他们使用不同的做法,但作者没有解释他们的任何事情。

我坚信这些差异有很大的原因,它们有不同的用法和案例,但我找不到在哪里使用不同的功能和语法。

非常感谢你!

3 个答案:

答案 0 :(得分:1)

php.net上的文档中的这些行是关键:

  

mysqli_fetch_array()是mysqli_fetch_row()的扩展版本   功能。除了将数据存储在数字索引中   结果数组,mysqli_fetch_array()函数也可以存储   关联索引中的数据,使用结果集的字段名称   作为钥匙。

http://www.php.net/manual/en/mysqli-result.fetch-array.php

在两个或多个列具有相同名称的情况下,引用该列的第一个出现的唯一方法是通过数字索引。在这些情况下,您需要mysqli_fetch_rowmysqli_fetch_array,其中MYSQLI_BOTHMYSQLI_NUM为其第二个参数(在程序用法中)。

mysqli_fetch_assoc($result)只是mysqli_fetch_array($result, MYSQLI_ASSOC)的缩写。

mysqli_fetch_object完成您的期望:它返回一行结果作为对象。在mysqli_fetch_assoc上使用此问题取决于对象或数组是否更好地代表正在处理的记录。对象可以是你想要的任何类 - stdClass是默认的。

答案 1 :(得分:0)

我认为没有太大的区别,只是你只需要一个功能来做同样的事情;)

答案 2 :(得分:-2)

以下是一些应该回答您问题的参考资料: mysqli_fetch_rowmysqli_fetch_assocmysqli_fetch_objectmysqli_fetch_array

一般情况下,PHP Documentation似乎是一个很好的资源。