我通常会尽量减少对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/