Php 日期时间字段赢得';MySQL数据库中的t更新
您好,我在更新数据库中的用户上次登录时遇到问题,如果我将其设置为更新其他列,它将正常工作,但当我尝试更新特定列“lastlogin”时,它就是不工作 我的代码:Php 日期时间字段赢得';MySQL数据库中的t更新,php,mysql,datetime,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
@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
在数据库中设置列的方式有问题吗?就像我上面提到的,如果我告诉它现在就把()放到另一个专栏中,它就可以正常工作。使用来尝试找出错误,然后将其发布到这里,这样我们可以在您需要时提供帮助。(将发表评论,但对low rep)根据我过去的经验,mysql_query()不一定在执行sql之前替换变量。试着用这种格式写。还可以使用mysql\u error检查代码执行是否存在任何问题:
$sql = "UPDATE my_users SET lastlogin=NOW() WHERE id=".$_SESSION["id"];
mysql_query($sql) or die(mysql_error());
如果没有错误,则很少有可能解释为什么laslogin条目没有发生:
- $\u会话[“id”]不包含任何值,并且没有值被传递到mysql
- 没有与$\u会话[“id”]匹配的id
- 还可以尝试更新其他一些列
- 您可能还需要检查是否使用了正确的扩展,如PDO
还发现,早期版本的mysql不支持使用now()更新datetime列。在这种情况下,请尝试将列类型重置为时间戳。有关详细信息,请参阅:已解决。下面还有另一个类似的声明,它超越了这一个!我真傻,但很容易错过 您好,就像我提到的,PHP代码运行良好,我可以告诉它在数据库中写入不同的列而不会出现问题。奇怪。尝试将列类型重置为时间戳。关于这一点,我建议您删除
@
在mysql\u查询
之前的标志。如果有错误,我想我们会想知道的。另一个建议是:在单独的步骤中将动态生成的SQL语句分配给一个变量,然后echo或vardump变量进行调试。在调用mysql\u query
之前,我们可以将该SQL语句带到另一个客户端进行测试。id
列的数据类型是什么?$\u会话[“id”]
的值是整数吗<代码>mysql接口函数已弃用,并删除了PHP7。使用PDO或mysqli以及带有绑定占位符的准备语句。@spencer7593感谢您的建议。我知道查询正在工作,因为如果我将“lastlogin”更改为任何其他db字段,它会将数据插入数据库。问题是在尝试插入“lastlogin”列时。排除某些可能性。。。表中没有定义更新前的
触发器为lastlogin
赋值,也没有更新后的触发器抛出错误并回滚事务。我建议您尝试更新两列,将NOW()分配给logindate
和另一个表列。看看另一个专栏的更新是否成功。没有理由使用这么长时间以来被弃用的api,也不应该在上面花费更多的精力。