最近遇到个问题,需要针对$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) |