繁体   English   中英

如何使用PHP插入查询将当前时间戳插入MySQL数据库

[英]How to insert the current timestamp into MySQL database using a PHP insert query

在我的MySQL数据库中,我有一个结构表

username - varchar
insert_time - timestamp

这个表是在MySQL中使用phpMyAdmin工具创建的,对于insert_time列,我提到了默认值为0000-00-00 00:00:00

现在问题是,我必须使用PHP脚本在稍后使用当前时间戳更新此默认值。

我尝试了以下PHP代码:

$update_query = 'UPDATE db.tablename SET insert_time=now() '.
                'WHERE username='.$somename;

运行PHP脚本时,它会失败,并且无法在数据库中插入任何内容。

我究竟做错了什么?

您收到了什么错误消息?

我猜你的实际错误是因为你的php变量没有用引号括起来。 试试这个

$update_query = "UPDATE db.tablename SET insert_time=now() WHERE username='" .$somename . "'"; 

你对now()的使用是正确的。 但是,您需要在整个查询周围使用一种类型的引号,而在值周围使用另一种类型的引号。

您可以修改查询以在开头和结尾使用双引号,并在$somename周围使用单引号:

$update_query = "UPDATE db.tablename SET insert_time=now() WHERE username='$somename'";

忘了把变量放在没有引号的sql语句中。

 $update_query = 
      "UPDATE db.tablename SET insert_time=NOW() WHERE username='" .$somename."'";

此格式用于获取当前时间戳并存储在mysql中

$date = date("Y-m-d H:i:s"); 

$update_query = "UPDATE db.tablename SET insert_time=".$date." WHERE username='" .$somename . "'"; 

不喜欢任何这些解决方案。

我就是这样做的:

$update_query = "UPDATE db.tablename SET insert_time=now() WHERE username='" 
            . sqlEsc($somename) . "' ;";

然后我使用自己的sqlEsc函数:

function sqlEsc($val) 
{
    global $mysqli;
    return mysqli_real_escape_string($mysqli, $val);
}

您也可以使用UNIX_TIMESTAMP()代替NOW()

$update_query = "UPDATE db.tablename 
                 SET insert_time=UNIX_TIMESTAMP()
                 WHERE username='$somename'";

MySQL中的UNIX_TIMESTAMP和NOW()之间的区别

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM