有二表 用户表 get 字段 id tg_id game_id dateandtime  另一个表gametg 有字段id game_id  taohao  fahao 等 无时间字段,
 
$rs=$db->query("select 1 from ".$db->pre."get where tg_id=$tg_id");
       if($db->num_rows($rs)>0){
       $db->query("update ".$db->pre."gametg set taohao=1 where id=$tg_id");
}
这样的话。就是领了东西, 马上更新状态 ,现在我想在用户取了东西后,一小时后更新,应该取的get表的时间
我这样写没有效果,请大神指点迷径,
$db->query("update ".$db->pre."gametg set taohao=1 where dateandtime<date_sub(now(),interval 1 hour) and id=$tg_id");
}

解决方案 »

  1.   

    SQL语句做不了这个延时执行在应用程序中实现吧
      

  2.   

    用SQL肯定可以的, 我就是不会把GET的时间段 拿到gametg来用, 二表的关联为GET.TG_ID  和gametg.id
      

  3.   

    就是在GET表的时间后一小时, get表中,dateandtime 记录有时间,在这个时间一小时后,
    dateandtime<date_sub(now(),interval 1 hour 一小时后的时间。
    gametg表中没有这个字段。要用get表中的,所以,不知道怎么把get表中的时间赋值给 gametg中,
      

  4.   

      update gametg A inner join get B on A.id = B.tg_id set A.dateandtime = date_sub(B.time, interval 1 hour)  PS
     友情建议能加强用语言表达你的问题,至少你上面这段话,我看了10遍也没太明白,标点符号没有一个正确的,只是大概猜想需要在更新A表的时候使用B表的数据,
      

  5.   

    另外一小时后是date_add 而不是date_sub不过也不清楚具体你的应用
      

  6.   

     $rs=$db->query("select 1 from ".$db->pre."get a,".$db->pre."gametg b,".$db->pre."game c WHERE a.game_id=c.game_id and a.tg_id=b.id");
           if($db->num_rows($rs)>0){
           $db->query("update ".$db->pre."gametg set taohao =1 WHERE a.dateandtime<date_sub(time(),interval 1 hour) and  id=$tg_id"); 三表相关联,也是不行。只要去掉这个时间段,马上就会更新 , 记录时间 小于领用的时间减去一小时,就是一小后,自己算下一, 还是要谢谢楼上的。
      

  7.   

    在事件中每分钟运行你的SQL
      

  8.   

    可以看看mysql中的event 看是否能满足要求