【发布时间】:2013-12-14 04:35:17
【问题描述】:
我在某种程度上理解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 )
如果它们在概念上是相等的,是否存在性能差异?我们应该使用哪个?差异是因为性能原因还是为了开发者的方便?
我坚信这些差异有很大的原因,它们有不同的用法和案例,但我找不到在哪里使用不同的函数和语法。
【问题讨论】:
-
简单:有几种方法可以“从查询中获取结果”。您可以让它们以数字方式索引或使用它们的列名和作为数组或作为对象。编写 API 的人意识到了这一点。他做了几个(方便的)包装来做这些事情。你可以选择你喜欢的。很多编程都是这样进行的。
-
deceze,所以我可以使用我喜欢的任何东西,这没关系吗?你能推荐我最常用的功能吗?我已经习惯了 mysqli_fetch_array,因为它有很多例子。但是为什么人们说永远不要使用它呢?或者他们没有任何严肃的目的这样说?感谢您的快速回复!
-
我通常使用
_fetch_assoc,因为我想按名称访问我的数据,因为它使代码更易于理解且不易出错。_fetch_array以数字方式返回 和 字符串索引数组,这是多余的,并且可能更浪费。并不是说它在宏伟的计划中真的很重要,但仍然如此。做你需要的;如果您想要命名键,请使用为您提供命名键的功能,仅此而已。 -
谢谢你,deceze!再来一次!我是否理解正确:函数生成数组并将它们存储在服务器内存中。这就是为什么数组中生成的数据越多,由于我的函数而使用的内存就越多。并且有一天,这些庞大的数据一次又一次的和平可能会开始导致内存泄漏和溢出。
-
不会有内存泄漏。内存泄漏是分配了内存但再也没有释放的问题,这是一个错误。我们这里所说的与内存泄漏无关,只是暂时使用更多的内存来存储数据。这就是为什么在赠款计划中您可能永远不会注意到差异的原因。直到您尝试一次获取大量数据并且您确实开始注意到...