Проверьте поле таблицы БД (datetime), если оно пустое или нет - PullRequest
3 голосов
/ 01 сентября 2011

После успешной регистрации пользователя моя таблица базы данных MySQL помещает 0000-00-00 00:00:00 в поля lastlogin_date и lastlogout_date по умолчанию.тип обоих полей datetime.В своем php-коде я проверяю, заходит ли пользователь на сайт в первый раз

$lastlogin = $db->query("SELECT `lastlogin_date` FROM `users` WHERE `id`='$_SESSION[id]'");
    $row = $lastlogin->fetch_array(MYSQLI_BOTH);
    $lastlogin=$row['lastlogin_date'];
    if(empty($lastlogin))
    { do something} 

Но, похоже, пусто не работает в этом случае.Как проверить, является ли поле lastlogin_date пустым или нет?if ($ lastlogin == '0000-00-00 00:00:00') ??

1 Ответ

6 голосов
/ 01 сентября 2011

0000-00-00 00:00:00 является значением. Если вы не хотите указывать какое-либо значение, вы должны хранить NULL, что будет иметь гораздо больший смысл. NULL - это недостаток значения.

При этом, я думаю, что лучший способ - выбрать логическое значение вместо вашего столбца:

-- (lastlogin_date is NULL) if you change your table structure
SELECT (lastlogin_date = '0000-00-00 00:00:00') as has_logged_in
  FROM users
 WHERE id = ?;

При получении запроса вы можете использовать $row['has_logged_in'], который является логическим значением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...