Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在一个PHP脚本中使用mysql_fetch_assoc两次_Php_Mysql - Fatal编程技术网

在一个PHP脚本中使用mysql_fetch_assoc两次

在一个PHP脚本中使用mysql_fetch_assoc两次,php,mysql,Php,Mysql,我通常尽量减少对MySQL的调用,但我最终遇到了一种情况,即我必须在一个脚本中对MySQL进行多次调用 看起来您不能在一个脚本中两次使用mysql\u fetch\u assoc(!) 看起来mysql_data_seek是解决方案,但我似乎无法让它工作 说清楚一点,我需要提出两个问题。第二个查询取决于第一个查询的结果。。。结构如下: $result = mysql_query($query1); while($row = mysql_fetch_assoc($result)){ $pos

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

看起来您不能在一个脚本中两次使用mysql\u fetch\u assoc(!)

看起来mysql_data_seek是解决方案,但我似乎无法让它工作

说清楚一点,我需要提出两个问题。第二个查询取决于第一个查询的结果。。。结构如下:

$result = mysql_query($query1); while($row = mysql_fetch_assoc($result)){ $pos = $row['position']; } mysql_free_result($result); // result freed per comment below. $query2 = ' '; //... dependent on $pos - in mysql shell this returns results! $result2 = mysql_query($query2) while($row = mysql_fetch_assoc($result2)){ echo $row['id']; } $result=mysql\u查询($query1); while($row=mysql\u fetch\u assoc($result)){ $pos=$row['position']; } mysql_free_result($result);//根据下面的注释释放结果。 $query2=“”;//。。。依赖于$pos-在mysql shell中,这将返回结果! $result2=mysql\u查询($query2) 而($row=mysql\u fetch\u assoc($result2)){ echo$row['id']; } 上面发生的事情是,第二个while循环不返回任何结果,即使查询应该有非平凡的行


可以肯定的是: 这就是您从上一个结果中清除指针的方式,以便能够再次使用mysql\u fetch\u assoc吗

mysql\u data\u seek($result,mysql\u num\u rows($result)-1)

我不知道用什么作为第二个论点。诚然,我对指针不是很清楚,但似乎我应该清除指向0的指针。但我得到了这个错误:


偏移量0对于MySQL结果索引8无效(或者查询数据未缓冲

OP更改了问题,因此请参见编辑

*删除此处发布的代码**

编辑

在您编辑了您的问题并明确表示您实际上有两个资源之后,看起来好像还有其他问题。当您使用两个不同的资源来提供
mysql\u fetch\u assoc()
时,您不必担心指针问题。
mysql\u fetch\u assoc()
的问题是它接受您的参数(
$result
)参考

现在回答你的问题:

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

在一个脚本中进行多个SQL调用没有问题。尽管通常您应该尽量减少SQL调用(因为它们可能会影响性能)

看起来你不能在一个脚本中两次使用mysql\u fetch\u assoc(!)

完全错误。Ofc你可以做到。只要你注意上面的内容。但是当你有两个结果集时,这不是你的问题

看起来mysql_data_seek是解决方案,但我似乎无法让它工作

同样:当您使用两个(不同)结果集时,这与此无关

为了清楚起见,我需要进行两个查询。第二个查询取决于第一个查询的结果

这应该不会有任何问题。看起来好像是出了什么问题。您是否验证了第二个查询确实是您所认为的?是否确实有记录?是否确实没有任何(MySQL)错误。是否启用了错误报告?是否尝试打印出
MySQL\u error()
?为了更好地帮助您,您可以提供您真正的代码,而不是
东西吗?可能还有其他事情发生


或者您只是试图在第一个循环中运行第二个查询。这在很多方面都是不好的。

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


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

您可以根据需要多次调用它,但只有在传入有效的查询结果句柄且该结果仍有未蚀刻的行可用时,才能得到结果。此处的哪部分信息不清楚?我想我不清楚第二个参数是什么…当我将其设置为0以清除指向th的指针时第一行,我得到了这个错误:
偏移量0对于MySQL结果索引8无效(或者查询数据未缓冲
如果您有第二个查询需要在同一脚本中进行MySQL\u fetch\u assoc怎么办?很抱歉接管您的答案,但是@ina更改了问题,因此它不再正确。希望您不介意。:-)第二个查询确实返回了记录!第二个查询是在自己的循环中运行的。对不起,我已经盯着这个问题看了好几个小时了,它快把我逼疯了!对不起-我的意思是,如果我使用mysql,第二个查询返回记录…但不知何故php没有通过…@ina我感觉到你的痛苦。所以你尝试回应这个问题第二次查询并将其复制/粘贴到shell中,得到结果?如果是:
mysql\u error()
会说什么?