2013-11-28 31 views
4

我明白mysqli_fetch_rowmysqli_fetch_objectmysqli_fetch_assocmysqli_fetch_array之间的差异。何时以及为什么要以某种方式使用mysqli_fetch_row,mysqli_fetch_object,mysqli_fetch_assoc,mysqli_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的&(脑友好的向导)” 和 “VISUAL QUICKPRO指南PHP 5高级”。他们使用不同的做法,但作者不解释他们的任何事情。

我坚信这些差异有很大的原因,他们有不同的用法和情况,但我找不到在哪里使用不同的函数和语法。

非常感谢您提前!

+2

简单:有几种方法可以“从查询中获取结果”。你可以让它们以数字或索引列名作为数组或作为对象。编写API的人意识到了这一点。他做了几个(方便)包装来做这些事情。你可以选择你喜欢的。这就是很多编程的过程。 – deceze

+0

欺骗,所以我可以使用任何我喜欢的,这不管?你能告诉我最常用的功能吗?我习惯于使用mysqli_fetch_array,因为很多示例都与它配合使用。但为什么人们说从不使用它?或者他们不以任何严肃的目的说这个?并感谢您的快速回复! –

+0

我通常会使用'_fetch_assoc',因为我想按名称访问我的数据,因为它使代码更易于理解,并且不易出错。 '_fetch_array'返回数字*和*字符串索引数组,这是多余的,可能可能更浪费。并不是说它在事物的宏伟计划中确实很重要,但仍然如此。做你需要的东西;如果你想要命名键,使用给你命名键的功能,除此之外别无其他。 – deceze

回答

-4

这里有一些引用应该回答你的问题: mysqli_fetch_rowmysqli_fetch_assocmysqli_fetch_objectmysqli_fetch_array

一般来说,PHP Documentation似乎是你一个很好的资源。

+6

这是一个不好的答案。我怀疑OP是否已经阅读过这些内容,如果他没有阅读,手册也没有明确说明哪个“更好”。 – deceze

+1

是的,我期待着像你这样的评论,但我认为这些链接可以帮助OP。 – Kai

+0

谢谢你们!我阅读了参考文献,甚至在最后几周还记得好几次。我是一名设计师,现在真的很难。但是文档没有解释什么时候以及为什么使用和更好的使用。我只想对自己保持严格的态度并习惯于最好的概念,因为程序员经常互相嘲笑:) –

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是默认的。

相关问题