PHP if else для проверки ip-адреса на соответствие тем, которые хранятся в таблице

#php #ip-address

#php #ip-адрес

Вопрос:

У меня есть только небольшой опрос и запрос, чтобы проверить, есть ли IP-адрес уже в таблице, чтобы узнать, проголосовал ли кто-то уже. У меня уже создана таблица, и она работает.

Мой вопрос в том, что оператор if else не работает. Я пытаюсь сделать это

если ip-адрес есть в таблице, покажите строку, иначе покажите опрос

 $ip=$_SERVER['REMOTE_ADDR'];

include("../db/config.php");
include("../db/opendb.php");

$result = mysql_query("SELECT * FROM Poll WHERE ip='$ip'");

if ($result==$ip) {
    echo "Thank you for voting.";
} else {
    echo "<form action=logvote.php method=post>" .
         "<input type=radio name=ans value=ans1> Answer1<br>" .
         "<input type=radio name=ans value=ans2> Answer2<br>" .
         "<input type=radio name=ans value=ans3> Answer3<br>" .
         "<input type=radio name=ans value=ans4> Answer4<br>" .
         "<input type=submit value=Submit>";

    echo "<input type=hidden name=ip value=";   
    echo "$ip>";

    echo "</form>";

 include("../db/closedb.php");

}
  

Заранее спасибо.

Ответ №1:

Вы просто забыли сначала получить строку. Кроме того, вы можете получить необходимую информацию с помощью простого подсчета:

 $result = mysql_query("SELECT COUNT(*) as 'count' FROM Poll WHERE ip='$ip'");
$row = mysql_fetch_assoc($result);

if ($row['count']) {
    // show string
} else {
    // show poll
}
  

Комментарии:

1. Другими словами, mysql_query возвращает ДЕСКРИПТОР результата, а не выбранные вами поля.

Ответ №2:

Ваш код должен быть:

 $query = mysql_query("SELECT ip FROM Poll WHERE ip='$ip'");
$info = mysql_fetch_object($query);
$result = $info->ip;

if($result == $ip)
  

mysql_query() возвращает ссылку, а не строку.

Кроме того, использование ip в инструкции SELECT ускорит ваш код.

Ответ №3:

mysql_query возвращает не данные напрямую, а скорее ссылку на результат.

Вы можете получить количество строк, найденных для запроса с помощью:

$num = mysql_numrows($result);

Таким образом, вы можете проверить с помощью:

 $result = mysql_query("SELECT ip FROM Poll WHERE ip='$ip'");
if (mysql_numrows($result)) {
    // dostuff
} else {
    // do other stuff
}

// you can retrieve the ip like so:
$data = mysql_fetch_assoc($result);
$ip = $data['ip'];