【发布时间】:2012-04-12 09:22:54
【问题描述】:
我通常会尽可能减少对 MySQL 的调用,但我终于遇到了必须在单个脚本中对 MySQL 进行多次调用的情况。
看起来您不能在一个脚本中使用两次mysql_fetch_assoc(!)。
似乎 mysql_data_seek 是解决方案,但我似乎无法让它工作。
为了清楚起见,我需要提出两个问题。第二个查询取决于第一个查询的结果...结构如下:
$result = mysql_query($query1); 而($row = mysql_fetch_assoc($result)){ $pos = $row['位置']; } mysql_free_result($result); // 根据下面的评论释放结果。 $query2 = ' '; //... 取决于 $pos - 在 mysql shell 中返回结果! $result2 = mysql_query($query2) 而($row = mysql_fetch_assoc($result2)){ 回声 $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
【问题讨论】:
-
您可以根据需要多次调用它,但只有传入有效的查询结果句柄并且该结果仍有未获取的行可用时才能获得结果。
-
这里有哪部分信息不清楚? php.net/manual/en/function.mysql-data-seek.php
-
我想我不清楚第二个参数是什么......当我将它设置为 0 以清除指向第一行的指针时,我收到此错误:
Offset 0 is invalid for MySQL result index 8 (or the query data is unbuffered