尝试做几件事,我有点卡住了。
我已获得以下代码:
<?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手册中的语法,但它并没有坚持下去。任何帮助将不胜感激。
答案 0 :(得分:1)
我不会详细介绍如何从数据库中准备和选择数据,因为你应该找到很多有关如何使用mysqli在其他地方执行此操作的信息(例如PHP documentation 。)
但我会建议查看基本上执行以下操作的INSERT INTO ... ON DUPLICATE KEY UPDATE
语法(documentation here)
例如,假设您在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
部分。