Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查数据库表字段(日期时间)是否为';它是空的还是不空的_Php_Mysql_Database_Datetime_Mysqli - Fatal编程技术网

Php 检查数据库表字段(日期时间)是否为';它是空的还是不空的

Php 检查数据库表字段(日期时间)是否为';它是空的还是不空的,php,mysql,database,datetime,mysqli,Php,Mysql,Database,Datetime,Mysqli,成功注册用户后,默认情况下,my MySQL db表将0000-00-00 00:00:00放入lastlogin\u date和lastlogout\u date字段。这两个字段的类型都是datetime。在我的php代码中,我检查用户是否第一次进入该站点 $lastlogin = $db->query("SELECT `lastlogin_date` FROM `users` WHERE `id`='$_SESSION[id]'"); $row = $lastlogin->

成功注册用户后,默认情况下,my MySQL db表将
0000-00-00 00:00:00
放入
lastlogin\u date
lastlogout\u 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\u date
字段是否为空?如果($lastlogin=='0000-00-00 00:00:00')?

0000-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\u logged\u in']
,这是一个布尔值

我听说“null”是buggy。最好使用空字符串或默认值“0”,但事实上我不理解它们之间的区别,为什么NULL错误?那完全没有意义。NULL只需要1位,而一个值最多可以占用几个字节,正如我所说的,NULL是缺少值。使用任意值也会使诸如
选择计数(某些列)
之类的查询完全错误。如果空值更合适的话,用空值代替空值是没有意义的。你到底在哪里听说过空值有问题?英雄联盟我真的很想听到更多关于这方面的信息。:)正如@Vincent指出的,NULL表示“没有值”。这怎么可能是错误的呢?
如果($lastlogin=='0000-00-00 00:00:00')
是一个不错的选择