php
  • mysql
  • database
  • datetime
  • mysqli
  • 2011-09-01 71 views 3 likes 
    3

    成功註冊用戶後,默認情況下,我的MySQL數據庫表將0000-00-00 00:00:00放入lastlogin_datelastlogout_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} 
    

    但是,似乎在這種情況下,empty不起作用。如何檢查lastlogin_date字段是否爲空?如果($ lastlogin =='0000-00-00 00:00:00')??

    +0

    'if($ lastlogin =='0000-00-00 00:00:00')'不是一個錯誤的選項 – tttony

    回答

    6

    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'],這是一個布爾值。

    +0

    我聽說「null」是越野車。更好地使用空字符串或默認的「0」,但實際上我不明白他們之間的差異和利弊 –

    +0

    如何是NULL的馬車?這是完全沒有意義的。正如我所說的,NULL只需要1個_bit_,而一個值可能需要幾個字節,而NULL則是缺少值。使用任意值還可以使查詢像「SELECT COUNT(some_col)」完全錯誤。當後者更加適用時,使用值而不是NULL是沒有意義的。 –

    +0

    你在世界的哪個地方聽說NULL是越野車?大聲笑!我真的很想聽到更多關於這個的信息。 :) @Vincent指出,NULL表示「沒有價值」。這怎麼可能是_buggy_? – Herbert

    相關問題