#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'];