Добрый день!
В таблице or_auth
должен хранится ip
и email
, у них есть поле col
в котором хранится число и поле date
- для срока хранения на 1 час, причем вставку ip
и вставку email
в таблицу нужно выполнить отдельными строками. Т.е., если существует уже ip
, то в поле col
по данному ip
прибавляется единица и обновляется время, если такого ip
нет - записывается данный ip
со значением в поле col = 1
и записывается время. Затем, нужно здесь же проверить, а есть ли такой емайл в этой же таблице, если нет, то надо вставить его отдельной строкой в эту же таблицу со значением в поле col = 1
и записать время ему, если есть то просто в поле col
по данному емайлу прибавляется также единица и обновляется время.
Вот, что я пробую:
//Переменную $email получаю выше
$logip = $_SERVER['REMOTE_ADDR'];//Получаем ip
$time_insert = time()+3600;//Для срока хранения в БД на 1 час
$logcol = 1;//Изначально поле col будет равно 1
$query = "(SELECT `col` FROM `or_auth` WHERE `ip` = '$logip')
UNION
(SELECT `email` FROM `or_auth` WHERE `email` = '$email')";
$res = mysqli_query($connection, $query);
if(mysqli_num_rows($res) > 0){
$row = mysqli_fetch_assoc($res);
if(isset($row['email'])){//Обновляем данные емайла, если он уже существует в БД
if($row['col']<5){//Здесь нужно только у email проверять, но не знаю как
mysqli_query($connection, "UPDATE `or_auth` SET `date`='$time_insert', `col`=`col`+1
WHERE `email` = '$email'");
}else{
mysqli_query($connection, "UPDATE `or_auth` SET `date`='$time_insert'
WHERE `email` = '$email'");
}
}else{//Если в БД еще нет такого емайла, записываем его
mysqli_query($connection, "INSERT INTO `or_auth` (`email`, `date`, `col`)
VALUES ('$email', '$time_insert', '$logcol')");
}
if($row['col']<5){//Здесь нужно только у ip проверять, но не знаю как
mysqli_query($connection, "UPDATE `or_auth` SET `date` = '$time_insert', `col` = `col` + 1
WHERE `ip` = '$logip'");
}else{
mysqli_query($connection, "UPDATE `or_auth` SET `date` = '$time_insert' WHERE `ip` = '$logip'");
}
}
else{//Если ip и email нет в БД, то надо их записать отдельными строками
$query = "INSERT INTO `or_auth` (`ip`, `email`, `date`, `col`)
VALUES ('$logip', '', '$time_insert', '$logcol'),('', '$email', '$time_insert', '$logcol')";
$res = mysqli_query($connection, $query);
}
Первый раз ip и емайл если таких нет в БД еще, заносятся в БД отлично, но последующие разы емайл вставляется заново, но у ip отлично обновляется поле col и время, а емайл один и тот же записывается каждый раз отдельной строкой, как уже написал выше. Комментарии к коду местами написал.
Надеюсь на Вашу помощь.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
file_get_contents("https://enwikipedia
Я сделал лог, в который будет записываться ошибка подключения и сколько пользователей, получили эту ошибку