@aramtop

Почему возвращает нуль?

Добрый день. Была задача получить информацию из БД о строке в колонке lastAction (там записано время последнего запроса), если последний запрос был менее 5 минут - выдавать ошибку.

Уже второй день пытаюсь найти различные вариации сравнения, но условие не работает, есть подозрения (пытался проверять), что $row['lastAction'] возвращает нулевое значение, хотя если в phpmyadmin выполнять аналогичный запрос, то получается вывод:

active b502ee579cdf0c7ff3d50c57b75c4454
memberID 27
lastAction 2020-06-18 18:19:44

Значит, время не нулевое. Условие не срабатывает ни в каких случаях (и оно пропускается). Полагаю, это изза того, что $lastAction равен нулю (но я не понимаю почему), и при вычитании его из даты получается большое число, которое априори больше 60*5. Уже долго мучаюсь, думаю, может я не замечаю очевидную ошибку ? Буду рад, если решение всетаки найдется :)

if(!filter_var($_GET['request'], FILTER_VALIDATE_EMAIL)){
		$error[] = "Incorrect e-mail address.";
	} else {
		$who = $_GET['request'];
	$stmt = $db->prepare("SELECT active, memberID, lastAction FROM members WHERE email = :who");
	$stmt->execute(array(
		':who' => $who
	));
		if (! empty($row['active'])){
	$error[] = "Couldn't find the address in the system.";
	} else {
		$lastAction = $row['lastAction'];
	}
	if ($active == 'Yes'){
	$error[] = "The ".$who." account is already activated.";
		}
	if (strtotime(date("Y-m-d H:i:s")) - strtotime(date($lastAction)) < 5*60){
	$error[] = "Less than 5 minutes have passed since your previous attempt.";
	 }
	}
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
В приведённом в вопросе коде нету присваивания данных переменной $row которая далее используется по коду.

То есть после execute() пропущено что-то типа
$row = $stmt->fetch();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@KingstonKMS
if ((time() - strtotime($lastAction)) < 5*60){
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы