|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.09.2016, 12:17 | #1 |
Новичок
Джуниор
Регистрация: 12.09.2016
Сообщений: 3
|
Проблема с получение результа запроса из БД
Помогите разобраться с возникшей проблемкой
1. Получаю IP посетителя if(isset($_SERVER['REMOTE_ADDR'])){ $qpid = $_SERVER['REMOTE_ADDR']; $date = date('H:m:s'); 2. Добавляю IP и время входа в БД $query = "INSERT INTO qpid (qpIdNum, qpIdTime) VALUES ('$qpid', '$date')"; $res = mysql_query($query); 3. Делаю вывод из БД $query = "SELECT * FROM qpid WHERE qpIdNum = '$qpid'"; $res = mysql_query($query); $qpidNum = array(); $qpidNum = mysql_fetch_assoc($res); echo $qpidNum['qpIdNum']; //из БД получаю вместо 46.42.4.164 только первую цифру 4 echo $qpidNum['qpIdTime']; // из БД получаю вместо 15:09:36 только первую цифру 1 } Нужен полный результат запроса из БД (46.42.4.164) Тип полей у qpIdNum и qpIdTime - varchar 255 Заранее спасибо за помощь. |
12.09.2016, 13:35 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Особого криминала не вижу.
А посмотрите, что у Вас в БД в таблице qpid получается (через PMA, например). |
12.09.2016, 15:59 | #3 |
Форумчанин
Регистрация: 01.08.2016
Сообщений: 182
|
Строка
$qpidNum = array(); - лишняя После строки $qpidNum = mysql_fetch_assoc($res); вставьте print_r($qpidNum); и посмотрите что реально присылает сервер в массиве, и какова реальная внутренняя структура этого массива. Если там только первые цифры от IP - скорее всего тип полей у qpIdNum/qpIdTime не VARCHAR 255, а CHAR или VARCHAR(1). И под хранение даты лучше использовать поля типа DATE, особенно если планируется выборка/сортировка по датам Последний раз редактировалось predefined; 12.09.2016 в 16:07. |
12.09.2016, 16:14 | #4 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
predefined, готов подписаться под каждый словом.
хранить дату нужно только в datetime формате. иначе потом проблем с ней не оберёшься! И ещё добавлю, что для хранения IP 255 символов - сверхизбыточно. это если не хранить IP в качестве числового значения (что удобнее и компактнее). Вот что я вычитал по этому поводу в Сети: Цитата:
|
|
12.09.2016, 16:52 | #5 |
Новичок
Джуниор
Регистрация: 12.09.2016
Сообщений: 3
|
Всем спасибо за помощь.
С выводом IP я разобрался, а временем не получается. Хочу чтобы по истечении 5 минут запись из БД удалялась. В БД поле qpIdTime перевел в формат timestamp if(isset($_SERVER['REMOTE_ADDR'])){ $qpid = $_SERVER['REMOTE_ADDR']; $date = date('H:m:s'); $query = "SELECT qpIdNum, TIME(qpIdTime) FROM qpid WHERE qpIdNum = '$qpid'"; $res = mysql_query($query); $qpidNum = array(); if(mysql_num_rows($res) > 0){ $qpidNum = mysql_fetch_assoc($res); if($date > $qpidNum['TIME(qpIdTime)'] + 30000){ $query = "DELETE FROM qpid WHERE qpIdNum = $qpId"; $res = mysql_query($query); } }else{ $query = "INSERT INTO qpid (qpIdNum, qpIdTime) VALUES ('$qpid', NOW())"; $res = mysql_query($query); } } |
12.09.2016, 17:52 | #6 |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
Выведи обе эти переменные на экран – чтоб понять, что и с чем ты пытаешься сравнить, и почему это не работает.
И что по-твоему будет, если к строковому значению '12:34:47' прибавить число 30000 ? Последний раз редактировалось Andkorol; 12.09.2016 в 18:00. |
13.09.2016, 12:12 | #7 |
Новичок
Джуниор
Регистрация: 12.09.2016
Сообщений: 3
|
Я во всем разобрался. Всем большое спасибо за подсказку.
|
13.09.2016, 17:38 | #9 | ||
Форумчанин
Регистрация: 01.08.2016
Сообщений: 182
|
Цитата:
Плюс, поиск то текстовому полю и сравнение < IP > - будет тормозить. И надо не забывать про IPv6... У топикстартера - простая конкретная задача, надеюсь, он потом оптимизирует поля и правильно расставит индексы. Он же быстро сообразил, что такое поле DATE и как удобно его использовать. Цитата:
Вообще стараюсь для работы с БД "класс-обёртку" использовать. Чтобы, при необходимости, было проще мигрировать на mysqli/PDO или mariaDB. Последний раз редактировалось predefined; 13.09.2016 в 17:45. |
||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
проблема с отображением результа выборки в DBGrid при использовании компонентов DOA | Undel | БД в Delphi | 1 | 15.05.2013 09:48 |
Получение данных из запроса | [MoNAMur] | PHP | 0 | 18.04.2012 12:26 |
получение данных из Post запроса | ToDayGoodDay | Работа с сетью в Delphi | 1 | 30.07.2011 20:15 |
Получение Post запроса | bulldog5293 | Работа с сетью в Delphi | 5 | 22.11.2010 12:51 |
Получение GET запроса приложением | shkurkin | Работа с сетью в Delphi | 3 | 09.07.2009 08:24 |