Php SQL时间已经过去了

Php SQL时间已经过去了,php,mysql,sql,sqlite,Php,Mysql,Sql,Sqlite,自上次将时间插入SQLITE以来,我一直在考虑创建一个时间,因此我的解决方案如下所示: if($n==1) { $db->exec("INSERT INTO progress (user,time,count) VALUES ('$user',0,CURRENT_TIMESTAMP)"); } //after 10 minutes $n becomes 2 if($n==2) { $db->exec("UPDATE progress SET time = CURRENT_TIMEST

自上次将时间插入SQLITE以来,我一直在考虑创建一个时间,因此我的解决方案如下所示:

if($n==1) { $db->exec("INSERT INTO progress (user,time,count) VALUES ('$user',0,CURRENT_TIMESTAMP)"); }
//after 10 minutes $n becomes 2
if($n==2) { $db->exec("UPDATE progress SET time = CURRENT_TIMESTAMP - count"); }
问题是由于某些原因,时间仍然是0。你知道我做错了什么吗

更多详细信息:

(table)process[id,user,time,count]
//what I display from this table is user and time
count = Time at creation of the row,
time = 0 at creation of the row,
//Updating the row after some time has passed
time = current_time - count

重要警告:

您的代码对SQL注入开放!强烈建议使用准备好的语句并绑定参数,以防止在数据库上使用恶意代码

出于教育目的回答:

(table)process[id,user,time,count]
//what I display from this table is user and time
count = Time at creation of the row,
time = 0 at creation of the row,
//Updating the row after some time has passed
time = current_time - count
  • 您在:
    (“$user,0,
    )处有一个输入错误。您应该有两个撇号,一个在前面,一个在后面:
    (“$user”,0,

  • 另外,在第二次查询中询问了
    count
    单词后,您提到它是一列:

       "UPDATE progress SET time = CURRENT_TIMESTAMP - count"
    
尝试减去
当前时间戳计数
就像尝试用数组减去一个数字:
4-数组(“hi”,5);
。这没有意义,而且您的数据库可能误解了您尝试执行的操作,从而导致错误

但请使用准备好的语句并绑定您的参数。这样,您的代码不仅可以工作,而且安全:)


根据OP的要求,以下是准备好的声明的示例:

您的第一个查询
$db->exec(“…
”)将变成:

$sql = "INSERT INTO progress (user,time,count) VALUES (:user, 0, CURRENT_TIMESTAMP)";
$stmt = $db->prepare($sql);
$stmt->bindParam(':user', $user);
$stmt->execute();

在这里,您正在准备sql语句
$sql
,然后绑定参数
$user
。网上有很多很好的教程,强烈建议您好好学习这个过程。

是的,对不起,我不知道为什么,但我确实有这个问题,这似乎不是问题所在。您可以举一个例子说明如何使用准备好的sql语句吗声明?@user4316754最后一行的
count
是什么?它只是一个伪列,一种区分插入时间和更新时间的方法,它是一个日期时间类型,意味着它应该以分钟为单位,甚至以秒为单位,使用当前的时间戳。@user4316754是的,我用一个示例编辑了我的答案为什么不创建两列,created、MODIFED和update MODIFED列更新,并将修改和创建之间的时间差作为进度?