【问题标题】:How to get the correct number of columns from mysql_fetch_array()?如何从 mysql_fetch_array() 中获取正确的列数?
【发布时间】:2010-08-27 21:23:07
【问题描述】:

这是我的一行代码

while($row = mysql_fetch_array($result))

我想知道一行中有多少列。我尝试了count($row),但这返回了我认为是整个 $results 的单元格数。

即实际上有 7 列和 2 行,count($row) 返回 14。我想要一个返回 7 的函数。

你能看出我哪里错了吗?

提前致谢。

编辑 - 找到答案

MYSQL_NUM 作为第二个参数传递给mysql_fetch_array
无论如何感谢大家的回答。

【问题讨论】:

  • 您应该接受 John Kugelman 的回答,因为他正确地描述了为什么您会看到结果以及解决方案。

标签: php mysql arrays


【解决方案1】:

PHP有一个返回列数的函数:

mysql_num_fields($result)

正如其他答案所说,由于mysql_fetch_array() 返回关联键(按列名)和数字键,因此您的计数增加了一倍。不过,无论我使用什么来获取行,我都会改用上述函数。

【讨论】:

    【解决方案2】:

    当您使用mysql_fetch_array 时,每行的列都有两次索引,一次按列号,一次按列名。所以count($row) 将是列数的两倍。

    如果您只需要数字索引,请使用mysql_fetch_row,如果您需要名称索引,请使用mysql_fetch_assoc。这些函数都将返回包含 7 个条目的行。

    【讨论】:

      【解决方案3】:

      mysql_fetch_array() 将行作为数字索引和关联键的组合数组返回。这就是为什么你得到 14 而不是 7。

      使用mysql_fetch_row() 来获取下一行作为数字索引。或mysql_fetch_assoc() 使用关联键获取它。更改为任一将导致 count($row) 返回 7。

      编辑 我最初说mysql_fetch_array() 返回整个结果。我已经纠正了这一点。重点仍然存在:使用我提到的其他功能之一将解决问题。

      【讨论】:

      • 那不正确... mysql_fetch_array() 将“获取结果行作为关联数组、数字数组或两者兼而有之”。它返回一行,但默认返回按编号和列名索引的列,因此每列列出两次。
      • 如果我支持您编辑的答案并导致您失去梦寐以求的 1337-rep 标记,您会原谅我吗?
      • @BoltClock:大声笑,不要继续。我会争取31337 :)
      • 当然,一切都已被原谅,我已将我的 -1 更改为 +1 :-)
      猜你喜欢
      • 2023-04-10
      • 2014-11-16
      • 2011-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-09
      • 2021-06-11
      • 1970-01-01
      相关资源
      最近更新 更多