【问题标题】:PHP statement: while($row = mysql_fetch_array($query))PHP 语句:while($row = mysql_fetch_array($query))
【发布时间】:2013-01-06 13:59:25
【问题描述】:

我在理解使用方面有困难

while($row = mysql_fetch_array($query))

显示变量“$query”中的一些数据库元素。 此外,我不明白函数“mysql_fetch_array()”传递给变量“$row”的内容。 我的猜测是只给出了“$query”中的数据库记录中的一条记录(或行),但是函数如何知道哪一行??

我会尝试用一个例子来解释自己。

假设我在变量 $query 中有 3 条记录,其中包含两个字段(比如“id”和“name”)。 首先,当变量 $row 被第一个元素填充时(比如 id=1,name=antonio),然后一些代码允许我显示或操作“1”和“antonio”,然后代码结束,while 开始再次。

现在我假设赋予变量“row”的是第二个元素,但是函数如何知道必须返回第二个元素(而不是第一个或第三个)?我的意思是,我不会在任何地方提供这些信息...

【问题讨论】:

  • 实际上,您执行一个返回结果的查询,然后循环结果直到您读取所有数据
  • $query 是一个结果资源。它不包含数据,但用作到 RDBMS 和您刚刚执行的查询的链接。 mysql_fetch_*() 指示 RDBMS 获取下一行并将其作为数组返回到 $row

标签: php mysql while-loop


【解决方案1】:

如果您将语句 $row = mysql_fetch_array() 作为您的 while 循环的条件语句,您将完成两件事:

  1. 您将获得一行新的 MySQL 信息,您可以在每次 while 循环检查其条件语句时打印出来。

  2. 当没有更多行时,函数将返回 FALSE,导致 while 循环停止!

【讨论】:

    【解决方案2】:

    变量 $query 是一种资源,因此具有某种内部“行计数器”。每次调用 mysql_fetch_array() 或其变体时,此计数器都会递增。结果,每次调用这个函数 mysql_fetch_array 时,都会得到下一行。当接收到最后一行并再次调用它时,它返回 false。由于 while 循环的工作方式,您可以跳出这个循环。

    【讨论】:

    • 非常感谢 :) 现在我明白了!
    猜你喜欢
    • 2012-03-30
    • 2012-02-29
    • 1970-01-01
    • 2015-08-05
    • 2011-12-07
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    • 2012-02-13
    相关资源
    最近更新 更多