Проверьте, сохранен ли 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"; } 

Теперь проблема заключается в том, что if-statement по-прежнему становится TRUE, если я изменяю IP, чтобы сказать: 125.0.0.1

Я пытаюсь исправить это в течение 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"; } 

Кстати, я добавил mysql_real_escape_string вокруг REMOTE_ADDR var, вы всегда должны дезинфицировать свой вход 🙂

Используйте 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"; }