Проверьте, хранится ли IP-адрес в базе данных. - PullRequest
1 голос
/ 15 ноября 2011

У меня есть база данных с таблицей с именем «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";
}

Теперь проблема, с которой я сталкиваюсь, заключается в том, что оператор if по-прежнему становится ИСТИННЫМ, если я изменяю IP на: 125.0.0.1

Я пытался исправить это в течение 2 часов, но до сих пор не могу понять, что я делаю неправильно.

Ответы [ 2 ]

5 голосов
/ 15 ноября 2011

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";
}

Кстати, как я добавил mysql_real_escape_string вокруг REMOTE_ADDR var, вы всегда должны очищать ввод:)

4 голосов
/ 15 ноября 2011

Используйте mysql_num_rows для проверки количества записей!

$query = mysql_query("SELECT * FROM ip WHERE ip='". $_SERVER['REMOTE_ADDR'] ."'");
$num = mysql_num_rows($query);

if($num > 0) {
  echo "Exists";
}
else {
  echo "Does not exist";
}
...