PHP SQL数组循环

标签 php mysql sql arrays while-loop

我最近使用了相当多的 PHP,虽然我通常发现它很有趣而且相当轻松,但我担心我可能偶然发现了很多人似乎讨厌它的怪癖之一.

考虑一下:

while($row = mysql_fetch_array($result))
{
    //Do something with $row...
}

...其中 $result 是一个 mysql_query,例如:

SELECT name, age FROM people

每次循环执行时,$row 引用返回结果中的不同行。

我从来不知道有一种语言,如果它检查的条件为真, while(... 语句会执行除执行之外的任何操作,而且我可以看到上面的代码是如何做的......但我不能查看 while 循环如何使其迭代获取的数组的索引。

这仅仅是 PHP 的一个奇怪的怪癖,还是 mysql_fetch_array 返回的对象每次被引用时都会递增/拼接自身?

我明白它是如何工作的,所以我可以在我的代码中使用它,但我不明白为什么而且我不喜欢死记硬背 - 如果有人能解释我会非常感谢。

最佳答案

the object returned by mysql_fetch_array increment/splice itself every time it's referenced

您说得对。出于某种原因,它在这个特定函数的手册引用中没有这样说,但让我们看一下非常相似的 mysql_fetch_row 的引用 http://www.php.net/manual/en/function.mysql-fetch-row.php

引用自引用资料:

Returns a numerical array that corresponds to the fetched row and moves the internal data pointer ahead.

内部数据指针向前移动后,再次调用此函数将获取下一行。此行为与 while 本身无关。您也可以在连续的行中多次调用该函数。

这种行为实际上很常见。考虑使用类似于 fread 的 API 从文件中读取。每次阅读时,您都会收到下一个数据 block 。这也是使用内部数据指针(也称为游标)实现的。

关于PHP SQL数组循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14698673/

相关文章:

PHP:即使未单击提交按钮,变量也会显示值

php - PDO 和 MySQL 的这种实现是否安全以防止 SQL 注入(inject)?

mysql - 将 select 的结果返回到一个变量 MYSQL

sql - 旋转 1300 万条记录时,tempDB 在 SQL Server 中已满,旋转需要超过 28 小时

php - 获取重复条目错误消息并在 if 语句中使用

PHP 5.4 代码更新 - 从 foreach 和对象数组中的空值警告创建默认对象

php - 使用 PHP 将多个文件上传字段 URL 到 SQL 数据库

php - 替换 php 数组中的所有键

mysql - SQLite 中拉丁语和英语名称的条件排序

sql服务器: index already existing on global temp table