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

aru*_*air 41 php mysql timestamp

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

username - varchar
insert_time - timestamp
Run Code Online (Sandbox Code Playgroud)

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

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

我尝试了以下PHP代码:

$update_query = 'UPDATE db.tablename SET insert_time=now() '.
                'WHERE username='.$somename;
Run Code Online (Sandbox Code Playgroud)

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

我究竟做错了什么?

Ash*_*nko 54

您收到了什么错误消息?

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

$update_query = "UPDATE db.tablename SET insert_time=now() WHERE username='" .$somename . "'"; 
Run Code Online (Sandbox Code Playgroud)

  • 是!这就是问题所在.我想我现在应该睡觉了.在这里深夜,IST.否则这些问题将蔓延到整个代码! (4认同)
  • NOW()是多余的,使用UNIX_TIMESTAMP() (4认同)

Geo*_*ins 14

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

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

$update_query = "UPDATE db.tablename SET insert_time=now() WHERE username='$somename'";
Run Code Online (Sandbox Code Playgroud)

  • 这是解决方案,但在将变量放入数据库查询之前,您应该始终转义变量.查看PDO http://php.net/pdo作为数据库抽象层,它可以帮助解决这个问题,或者至少在插入之前运行mysql_real_escape_string($ somename). (3认同)

Lau*_*rke 9

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

 $update_query = 
      "UPDATE db.tablename SET insert_time=NOW() WHERE username='" .$somename."'";
Run Code Online (Sandbox Code Playgroud)


小智 8

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

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

$update_query = "UPDATE db.tablename SET insert_time=".$date." WHERE username='" .$somename . "'"; 
Run Code Online (Sandbox Code Playgroud)