1

我已经坚持了一段时间,无法弄清楚。

我使用此代码记录访问,并且每次加载页面时插入两行,1 个唯一行和 1 个非唯一行,这是怎么回事?

$check = mysql_query("SELECT ip FROM visits WHERE ip = '{$_SERVER['REMOTE_ADDR']}'");
$num= mysql_num_rows($check);
if ($num< 1){
mysql_query("INSERT INTO visits VALUES('','{$_SERVER['REMOTE_ADDR']}','1')");
}else{
mysql_query("INSERT INTO visits VALUES('','{$_SERVER['REMOTE_ADDR']}','0')");}

我知道由于 ip 更改等原因,它不是计算访问次数的最佳脚本,但那是另一回事,只是想知道为什么这会在页面加载时插入两次

当我将代码移动到没有任何 HTML 的单独文件以使用假 IP 对其进行测试并且它可以工作时,页面上的哪种 html 可能会导致这种情况?

4

1 回答 1

1

可能不是您问题的答案,但我认为您需要优化您的陈述。否则,您可能拥有数千条重复 ips 和 0 或 1 次访问的记录。

  • IP 地址 - varchar -(UNIQUE KEY)
  • 参观次数。- 中等 -

然后你可以让它更容易(更新):

$ip = $mysqli->real_escape_string($_SERVER['REMOTE_ADDR']) ;
$update = "INSERT INTO visits (ip, times_visited) VALUES ('{$ip}', 1)
ON DUPLICATE KEY UPDATE times_visited = times_visited+1 ; " ;
于 2013-02-17T12:12:47.030 回答