警告:mysql_fetch_assoc():提供的参数不是有效的MySQL结果资源

时间:2011-09-05 00:35:00

标签: php mysql

我查看了几篇SO帖子以及其他网站上的文章,但尚未找到有效的答案:(。

这是我的代码:

include("db_conn.php");
$conn = mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error()); mysql_select_db($db_name) or die(mysql_error());

$timestamp = time();
$add_time = time()+(60*60);

$query = "SELECT * FROM links WHERE timestamp >= '$timestamp' AND overflow = 'NO'";
$result = mysql_query($query);

if(mysql_num_rows($result) > 0) {
while($row = mysql_fetch_assoc($result)){
        $link = $row['link'];
        $hit_update = rand($row['min'],$row['max']);

        $query = "UPDATE links SET timestamp = '$add_time', hit_counter = '0', max_hits = '$hit_update' WHERE link = '$link' AND timestamp <= '$timestamp' AND overflow = 'NO'";
        $result = mysql_query($query) or die(mysql_error());
}
}

mysql_close($conn);

返回错误:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource

要诊断我已经尝试过:

  • 删除包含if()声明。
  • 评论while()循环,并在$size = mysql_num_rows($result); echo $size;下面添加$result = mysql_query($query);,返回3,即查询本身没有任何问题。

有谁知道问题可能是什么?

任何答案都将非常感谢!!

1 个答案:

答案 0 :(得分:3)

您正在覆盖控制循环内循环的$result变量。这不好。数据库资源包含一个必须完全消耗的游标,否则dispose of,只是用新结果覆盖它可能无法获得预期的结果(或者确实会给你带来运行时错误)。

只需在循环内使用不同的变量进行查询。