datetime字段不会在MySQL数据库中更新

时间:2017-05-21 01:34:25

标签: php mysql datetime

您好我在数据库中更新用户的上次登录时间有问题,如果我将其设置为更新其他列,则它可以正常工作,但是当我尝试更新特定列“lastlogin”时它不起作用

我的代码:

    @mysql_query("UPDATE my_users SET lastlogin=NOW() WHERE id=".$_SESSION["id"]);

My DB column:

column name: lastlogin

type: datetime

Null: No

Default: 0000-00-00 00:00:00

在DB中设置列的方式有什么问题吗?就像我上面提到的那样,如果我要告诉它将NOW()放在另一列中,它可以正常工作。

3 个答案:

答案 0 :(得分:0)

使用mysql_error尝试查找错误,然后将其发布到此处,以便我们在您需要时提供帮助。 (会评论,但低代表)

答案 1 :(得分:0)

根据我过去的经验,mysql_query()不一定在执行sql之前替换变量。尝试以这种格式写作。还可以使用mysql_error检查代码执行是否存在任何问题:

$sql = "UPDATE my_users SET lastlogin=NOW() WHERE id=".$_SESSION["id"]; 
mysql_query($sql) or die(mysql_error());

如果没有错误,那么为什么没有发生laslogin条目的可能性很小:

  • $ _ SESSION [“id”]没有任何值,也没有值传递给mysql。
  • 没有与$ _SESSION [“id”]匹配的ID。

调试:

  • 还尝试更新其他一些列。
  • 您可能还想检查是否使用了正确的扩展程序,例如PDO ..

还发现,早期版本的mysql不支持使用now()更新datetime列。在这种情况下,请尝试将列类型重置为TIMESTAMP。有关详细信息,请参阅此处:https://bugs.mysql.com/bug.php?id=27645

答案 2 :(得分:0)

解决。还有一个类似的声明进一步下来,这是超过骑这个!我多么愚蠢,但容易错过!