php - 检查IP地址是否存储在数据库中

标签 php mysql database ip

我有一个数据库,其中有一个名为“IP”的表。它有 2 列 Id(int11)ip(varchar15),以及一行值:id 1, ip 127.0.0.1

现在回到 PHP 我有以下内容:

$ip = $_SERVER['REMOTE_ADDR'];
$query = "SELECT * FROM ip WHERE ip='$ip'";

if(mysql_query($query)) {
    echo "Ip is already in database";   
}
else {
    echo "Ip is not in database";
}

现在我遇到的问题是,如果我将 IP 更改为:125.0.0.1

,if 语句仍然变为 TRUE

我已经尝试修复它 2 个小时了,但仍然无法弄清楚我做错了什么。

最佳答案

mysql_query()如果查询成功执行,即使没有结果也不会返回 false。尝试使用 mysql_num_rows()相反:

$ip = mysql_real_escape_string($_SERVER['REMOTE_ADDR']);
$query = "SELECT * FROM ip WHERE ip='$ip'";
$result = mysql_query($query);

if (mysql_num_rows($result) > 0) {
  echo "Ip is already in database";
}
else { 
  echo "Ip is not in database";
}

顺便说一句,我在 REMOTE_ADDR var 周围添加了 mysql_real_escape_string,您应该始终清理您的输入:)

关于php - 检查IP地址是否存储在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8141626/

相关文章:

php - 空表上的 php 中的 sql 查询返回什么?

php - MySQL 使用 And 条件连接

php - GCM PHP - 传递二维数组

php - Insert 只存储第一个数字,其余的被忽略

php - 如何在 Laravel 中的多个数据库上运行迁移?

sql - 多字符串匹配性能

mysql - 涉及集合比较的 SQL 查询

Java - 更新查询并不每次都有效

java - 日期值不正确 : '' for column 'DATESORTIE' at row 1

MySQL 查询仅在两个表都有行时才返回结果