繁体   English   中英

无法弄清mysql datatime

[英]can't figure out mysql datatime

因此,在最愚蠢的情况下,我竭尽全力...我试图将新的时间保存到MySQL数据库中,并尝试了我能想到的一切来实现此目的,但我无法做到这一点原因。 这就是我所拥有的...

$_ = gmdate("Y-m-d H:i:s",time());
if (! mysql_query("UPDATE Accounts 
    SET likes='1',update='".$_."' 
    WHERE username='".$_POST['username']."'")) { ... }

我试过了:

update=FROM_UNIXTIME(".$_.")
update=UNIX_TIMESTAMP(".strtotime($_).")
update=UNIX_TIMESTAMP('".strtotime($_)."')
update='".UNIX_TIMESTAMP(strtotime($_))."'
update='".UNIX_TIMESTAMP($_)."'
update='".$_."'

任何帮助将不胜感激! 谢谢戴夫

如果要使用update作为列名,则应使用反引号将其转义,因为它是保留字 $_的值适用于该字段本身。

mysql_query(" ... SET likes = 1, `update` = '$_' ...")

还有一件事; 您应该转义$_POST['username']以避免SQL注入:

" ... WHERE username='" . mysql_real_escape_string($_POST['username']) . "'");

您还可以使用格式字符串来组合所有内容,例如:

$sql = sprintf("UPDATE Accounts SET likes='%d',`update`=%s' WHERE username='%s'", 
    1,
    $_,
    mysql_real_escape_string($_POST['username'])
);

$res = mysql_query($sql) or die("yikes: " . mysql_error());

也:

请不要在新代码中使用mysql_*函数 它们不再维护,已正式弃用 看到红色框了吗? 而是了解准备好的语句 ,并使用PDOMySQLi- 本文将帮助您确定哪一个。 如果您选择PDO, 这是一个很好的教程

mysql_query("UPDATE Accounts SET likes='1',update='".$_."' WHERE username='".$_POST['username']."'")

您在查询中有两个选项, now()curdate()函数。

now()返回日期以及格式的时间戳; YYYY-MM-DD HH:MM:SS

curdate()以YYYY-MM-DD格式返回日期

您的查询将如下所示:

mysql_query("UPDATE Accounts SET likes='1', `update`='now()' WHERE username='".$_POST['username']."'")

注意后面的滴答声,因为它是保留字,所以需要在更新中使用。 您需要转义保留,以便可以将其用作列名。

请不要在新代码中使用mysql_*函数 它们不再维护,已正式弃用 看到红色框了吗? 而是了解准备好的语句 ,并使用PDOMySQLi- 本文将帮助您确定哪一个。 如果您选择PDO, 这是一个很好的教程

update是MySQL语法中的关键字,您不应命名字段update 尝试将其命名为: updated_atupdated_date

如果无法执行此操作,则必须在查询中引用字段名称:

"UPDATE Accounts 
SET likes='1',`update`='".$_."' 
WHERE username='".$_POST['username']."'"

暂无
暂无

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

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