我通常会尽量减少对MySQL的调用,但最终遇到了必须在一个脚本中多次对MySQL进行调用的情况。

看起来您不能在单个脚本中使用两次mysql_fetch_assoc(!)。

似乎mysql_data_seek是解决方案,但我似乎无法使它正常工作。

需要明确的是,我需要进行两个查询。第二个查询取决于第一个查询的结果...这是结构:

$结果= mysql_query($ query1);

while($ row = mysql_fetch_assoc($ result)){
 $ pos = $ row ['position'];
}

mysql_free_result($ result); //根据下面的评论释放结果。

$ query2 =''; // ...取决于$ pos-在mysql shell中返回结果!
$ result2 = mysql_query($ query2)

while($ row = mysql_fetch_assoc($ result2)){

 echo $ row ['id'];

}



上面发生的事情是,即使查询应该具有不平凡的行,第二个while循环也不会返回结果。



只是要确定:
这是您如何从以前的结果中清除指针,以便能够再次使用mysql_fetch_assoc?

mysql_data_seek($result,mysql_num_rows($result) - 1);

我不确定要用作第二个参数。诚然,我对指针的了解还不是很清楚,但是似乎我应该将指针清除为0。但是我得到了这个错误:

Offset 0 is invalid for MySQL result index 8 (or the query data is unbuffered

最佳答案

检查与mysql_error()的连接,并查看是否出现“命令不同步”错误。如果是这样,则需要在完成第一个查询之后并在开始第二个查询之前调用mysql_free_result()。您也可以只调用mysql_close()来关闭数据库连接,然后重新打开一个新的数据库连接。

有关更多详细信息,请参见this question

关于php - 在单个PHP脚本中两次使用mysql_fetch_assoc,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9913366/

10-13 02:53