Php 检查数据库表字段(日期时间)是否为';它是空的还是不空的
成功注册用户后,默认情况下,my MySQL db表将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->
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')
是一个不错的选择