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