2

以下のコードを使用するだけでヒットをカウントするレポートテーブルがあります。

// Get hits
    $hits_query = mysql_query("SELECT COUNT(*) AS `count` FROM `reports` WHERE `stuff_id` = ".$row->id."");
    $fetch_hits = mysql_fetch_array($hits_query);
    $hits = $fetch_hits['count']; 

そのコードはうまく機能し、私が望むことを正確に実行しますが、私が今望んでいるのは、ユニークなヒットを取得する方法ですか?

私のレポートテーブルにはすべてのアクセスを保存しているので、のユーザーベースごとに複数のログがありますstuff_id。レポートテーブルでは、各レポートに日付を01-23-2013として、ユーザーIPとともに保存し、stuffed24時間ごとに2から1に変更します。

4

2 に答える 2

0

ユーザーを一意に識別するフィールドが必要です。私の例では、それがであると仮定しuser_ipます。これを変える:

$hits_query = mysql_query("SELECT COUNT(*) AS `count` FROM `reports` WHERE `stuff_id` = ".$row->id."");

これに:

$hits_query = mysql_query("SELECT COUNT(DISTINCT `user_ip`) AS `count` FROM `reports` WHERE `stuff_id` = ".$row->id."");

注: mysqlライブラリはPHP 5.5で非推奨になり、PHPの将来のバージョンで削除されます。それから離れた移行の計画を開始することをお勧めします。

于 2013-01-23T15:50:01.333 に答える
0

あなたはこれを行うことができます:

$hits_query = mysql_query("SELECT COUNT(DISTINCT `user_ip`) AS `count` FROM `reports` WHERE `stuff_id` = ".$row->id."");

または、一意の応答が必要な場合は、次のように実行できます。

$user-IP = "Put here the ip adress of the user that you want";
$hits_query = mysql_query("SELECT COUNT(*) AS `count` FROM `reports` WHERE `user_ip` = ".$user-IP."");
于 2013-01-23T15:58:47.760 に答える