在php和mysql中使用IP

时间:2016-07-24 11:33:30

标签: php mysql pdo

我正在尝试创建一个系统(以及它是一个项目),我可以在这些系统执行某些活动时记录用户的IP地址。经过一番研究,我发现需要ip2long才能转换成数据库。我有一个名为ips(unsigned)的数据库,主列是ip和count。

Mysql屏幕截图

enter image description here

这就是我目前所拥有的:

$ip=$_SERVER['REMOTE_ADDR'];
$ip = ip2long($ip);

$stmt = $DB_con->prepare("INSERT INTO ips (ip, count) VALUES  (:addr, 1) ON DUPLICATE KEY UPDATE count = count + 1");
$stmt->bindparam(":addr", $ip);
$stmt->execute();

这很好用。但我似乎无法从数据库中检索值并显示它们。我可能做错了但却不知道。在此声明之后,我需要转换longtoip。我感谢一些帮助,因为这只给了我一个错误500:

$stmt = $DB_con->prepare("SELECT ip , count FROM ips WHERE 1")
$stmt->execute();

1 个答案:

答案 0 :(得分:4)

以下查询没有任何问题,您可以从查询下面的SQL Fiddle链接中看到:

SELECT ip, count FROM ips WHERE 1

SQLFiddle

但是,如果您确实打算将COUNT用作函数,那么您的查询需要GROUP BY子句:

SELECT ip, COUNT(*) AS ipCount
FROM ips
GROUP BY ip

作为一般的良好实践,您可能希望避免命名列count,或者在任何其他MySQL函数之后,因为它可能会导致您的查询实际执行的内容混淆(并且您可能已经成为这个你自己)。