Chinaunix首页 | 论坛 | 博客
  • 博客访问: 61222
  • 博文数量: 10
  • 博客积分: 393
  • 博客等级: 一等列兵
  • 技术积分: 124
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-09 09:37
文章分类

全部博文(10)

文章存档

2012年(1)

2011年(5)

2010年(4)

我的朋友

分类: 系统运维

2011-12-01 14:03:42

最近遇到个问题,需要针对$result=mysql_query()查询后的结果集重复利用。
在while($array=mysql_fetch_array($result))之后,还需要对$result这个结果集再次遍历。我想当然的就将$result这个结果集传递给下一个函数去使用了,结果惊奇的发现无论如何,在处理完以后,后面的函数都没法再次处理这个结果集,表面看上去,好像是之前的while循环,已经将$result这个查询的结果集给清空了。。
但是,通过rows查看,这个结果集里面肯定是有数据的!那数据到哪里去了呢?后来才得知,在之前的while循环使用mysql_fetch_array取数据的时候,每取一次数据,就会将指针后移一位。当整个while循环完毕,$result这个结果集的当前指针已经移动到末尾。当我再次将$result传递给后面的函数时,由于指针已经到末尾,所以就直接跳出了循环,导致取不出数据!

如何解决?
查了下,发现有如下函数:mysql_data_seek($result,0);这个函数可用。
以下为解释:
mysql_data_seek(data,row)
data 必需。返回类型为 resource 的结果集。该结果集从 mysql_query() 的调用中得到。
row 必需。想要设定的新的结果集指针的行数。0 指示第一个记录。

找到了这个。在后续将$result传递给其他函数处理的时候,都执行下:
mysql_data_seek($result,0),强制将$result结果集指针指向第一个记录,以后的函数就正常了。。。

记录下这个细节,希望对后来人有帮助!
阅读(3182) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~