我正在尝试创建一个系统(好吧,这是一个项目),我可以在用户进行某些活动时记录他们的IP地址。经过一番研究,我发现ip2long需要转换成数据库。我有一个名为ips(unsigned)的数据库,主列是ip和count。
Mysql截图:
php - 在php和mysql中使用IP-LMLPHP
这就是我目前的情况:

$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();

最佳答案

下面的查询没有任何问题,您可以从下面给出的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函数命名,因为这可能会导致对查询实际执行的操作的混淆(而且您自己也可能会成为此问题的牺牲品)。

关于php - 在php和mysql中使用IP,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38551564/

10-13 08:21
查看更多