mysql用户代理日志记录

时间:2014-05-06 07:14:26

标签: php mysql database

尝试做几件事,我有点卡住了。

我已获得以下代码:

    <?php 
    $con=mysqli_connect("SERVERNAME","USERNAME","PASSWORD","DB");
    // Check connection
        if (mysqli_connect_errno()) {
           echo "Failed to connect to MySQL: " . mysqli_connect_error();
        } 
     $UserAgent = $_SERVER['HTTP_USER_AGENT'];

     $query = "SELECT PID FROM `UserAgents` WHERE `UserAgent` = \"$UserAgent\"";

     //If User agent exists, get the record and update it by one
     //If it doesn't exist, create the record and set the value to 1.


      ?> 

我试图记录有多少不同的用户代理正在访问一组特定的资源,因为我想确保它针对我最大的消费者群体进行了优化。所以我试图统计有多少不同的UA访问权限,而不是单独记录每一个。

我挂断了从表中提取值(PID为)。我试图查看PHP手册中的语法,但它并没有坚持下去。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我不会详细介绍如何从数据库中准备和选择数据,因为你应该找到很多有关如何使用mysqli在其他地方执行此操作的信息(例如PHP documentation 。)

但我会建议查看基本上执行以下操作的INSERT INTO ... ON DUPLICATE KEY UPDATE语法(documentation here

  1. 尝试在数据库中插入行
  2. 如果插入失败,因为存在具有相同键的现有行...
  3. 回退到查询的UPDATE部分
  4. 例如,假设您在user_agent列中使用了具有UNIQUE约束的下表fooagents

    user_agent
    count
    

    然后,具有UA FooBrowser 1.0的用户浏览您的网站并执行以下查询

    INSERT INTO fooagents (user_agent, count)
      VALUES ('FooBrowser 1.0', 1)
    ON DUPLICATE KEY 
      UPDATE fooagents SET count = count + 1
    

    第一次运行时,运行INSERT并将值插入数据库中的新行。拥有该UA的用户第二次访问您的网站并运行相同的查询,因为UNIQUE列上有fooagents.user_agent约束,INSERT将失败,并触发{ {1}}在包含该unqiue UA的行上运行,这要归功于查询的UPDATE部分。