1

私はしばらくこれに固執していて、それを理解することができません。

私はこのコードを使用して訪問を記録し、ページが2つの行(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の変更などのために訪問をカウントするのに最適なスクリプトではないことは知っていますが、それは別の話です。なぜこれがページの読み込み時に2回挿入されるのか疑問に思っています。

コードをHTMLなしの別のファイルに移動して、偽のIPでテストすると、ページ上のどのようなhtmlが原因でこれが発生する可能性がありますか?

4

1 に答える 1

1

あなたの質問に対する答えではないかもしれませんが、私はあなたがあなたのステートメントを最適化する必要があると思います。それ以外の場合は、ipsを繰り返し、0回または1回アクセスした数千のレコードを作成できます。

  • IPアドレス-varchar-(一意キー)
  • 訪問した時間。--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 ; " ;
于 2013-02-17T12:12:47.030 に答える