Php 何时以及为什么使用mysqli\u fetch\u行、mysqli\u fetch\u对象、mysqli\u fetch\u assoc、mysqli\u fetch\u数组

Php 何时以及为什么使用mysqli\u fetch\u行、mysqli\u fetch\u对象、mysqli\u fetch\u assoc、mysqli\u fetch\u数组,php,mysql,mysqli,fetch,Php,Mysql,Mysqli,Fetch,我在某种程度上理解了mysqli\u fetch\u行、mysqli\u fetch\u对象、mysqli\u fetch\u assoc和mysqli\u fetch\u数组之间的区别 我的问题是,如果它们如此相似(如果它们真的与许多主题所说的几乎相同),我们应该使用哪一种? 为什么我们要使用首选的,是否存在性能差异 我读过一些人说永远不要使用mysqli_fetch_数组。我很困惑。我现在正在阅读一些PHP书籍,所有的例子都包括它。如果这是不正确的,我是不是最好在运动时停止使用它,并使用其他

我在某种程度上理解了
mysqli\u fetch\u行
mysqli\u fetch\u对象
mysqli\u fetch\u assoc
mysqli\u fetch\u数组
之间的区别

我的问题是,如果它们如此相似(如果它们真的与许多主题所说的几乎相同),我们应该使用哪一种? 为什么我们要使用首选的,是否存在性能差异

我读过一些人说永远不要使用mysqli_fetch_数组。我很困惑。我现在正在阅读一些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.net文档中的这些行是关键:

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

如果两个或多个列具有相同的名称,则引用该列第一次出现的唯一方法是通过数字索引。在这些情况下,您需要
mysqli\u fetch\u行
mysqli\u fetch\u数组
,并将
mysqli\u两者
mysqli\u NUM
作为第二个参数(在过程用法中)

mysqli\u fetch\u assoc($result)
只是mysqli\u fetch\u数组($result,mysqli\u assoc)的缩写


mysqli_fetch_object
实现了您所期望的功能:它以对象的形式返回一行结果。在mysqli_fetch_assoc上使用这个函数是一个对象还是数组更好地表示正在处理的记录的问题。对象可以是您想要的任何类-默认为stdClass。

Simple:有几种方法可以“从查询中获取结果”。您可以使用数字或列名以及数组或对象对它们进行索引。编写API的人意识到了这一点。他做了几个(方便的)包装来做这些事情。你可以选择你喜欢的。这就是很多编程的方式。deceze,所以我可以使用我喜欢的任何东西,而这并不重要?你能给我推荐最常用的功能吗?我已经习惯了mysqli_fetch_数组,因为有很多例子都使用它。但是为什么人们说永远不要使用它呢?或者他们说这话没有任何严肃的目的?谢谢你的快速回复!我通常会使用
\u fetch\u assoc
,因为我希望按名称访问我的数据,因为它使代码更易于理解,更不容易出错
\u fetch\u array
返回数字和字符串索引数组,这是多余的,可能更浪费。这并不是说它在事情的大计划中真的很重要,但仍然很重要。做你需要的;如果您想要命名密钥,请使用提供命名密钥的函数,仅此而已。谢谢您,deceze!再一次我是否理解正确:函数生成数组,并存储在服务器内存中。这就是为什么数组中生成的数据越多,由于我的函数,使用的内存就越多。而且这种一次又一次的和平可能会在某一天开始导致内存泄漏和内存不足。不会有内存泄漏。内存泄漏是指内存分配后再也不会释放的问题,这是一个bug。我们在这里讨论的与内存泄漏无关,只是暂时使用更多内存来存储数据。这就是为什么在助学金计划中,你可能永远不会注意到差异。直到你试图一次获取大量数据,并开始注意到。。。