我查看了几篇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
,即查询本身没有任何问题。有谁知道问题可能是什么?
任何答案都将非常感谢!!
答案 0 :(得分:3)
您正在覆盖控制循环内循环的$result
变量。这不好。数据库资源包含一个必须完全消耗的游标,否则dispose of,只是用新结果覆盖它可能无法获得预期的结果(或者确实会给你带来运行时错误)。
只需在循环内使用不同的变量进行查询。