在我的MySQL数据库中,我有一个结构表
username - varchar
insert_time - timestamp
此表是使用phpMyAdmin工具在MySQL中创建的,对于insert_time
列,我提到默认值为0000-00-00 00:00:00
。
现在问题是,我必须使用PHP脚本在稍后使用当前时间戳更新此默认值。
我尝试了以下PHP代码:
$update_query = 'UPDATE db.tablename SET insert_time=now() '.
'WHERE username='.$somename;
运行PHP脚本时,它会失败,并且无法在数据库中插入任何内容。
我做错了什么?
答案 0 :(得分:53)
您收到了什么错误消息?
我猜你的实际错误是因为你的php变量没有用引号括起来。试试这个
$update_query = "UPDATE db.tablename SET insert_time=now() WHERE username='" .$somename . "'";
答案 1 :(得分:13)
您对now()的使用是正确的。但是,您需要在整个查询周围使用一种类型的引号,而在值周围使用另一种类型的引号。
您可以修改查询以在开头和结尾使用双引号,并在$somename
周围使用单引号:
$update_query = "UPDATE db.tablename SET insert_time=now() WHERE username='$somename'";
答案 2 :(得分:9)
忘记将变量放在sql语句中而不引用。
$update_query =
"UPDATE db.tablename SET insert_time=NOW() WHERE username='" .$somename."'";
答案 3 :(得分:8)
此格式用于获取当前时间戳并存储在mysql中
$date = date("Y-m-d H:i:s");
$update_query = "UPDATE db.tablename SET insert_time=".$date." WHERE username='" .$somename . "'";
答案 4 :(得分:1)
不喜欢任何这些解决方案。
这就是我的表现:
$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);
}
答案 5 :(得分:0)
您也可以使用NOW()
代替UNIX_TIMESTAMP()
:
$update_query = "UPDATE db.tablename
SET insert_time=UNIX_TIMESTAMP()
WHERE username='$somename'";