行插入两次,一次加载

时间:2013-02-17 11:57:59

标签: php

我已经被困在这一段时间了,无法理解。

我使用此代码记录访问次数,每次页面加载后,一旦插入两行,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会导致这种情况?

1 个答案:

答案 0 :(得分:1)

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

  • IP地址 - varchar - (UNIQUE KEY)
  • 时代访问过。 - mediumint -

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

$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 ; " ;