假设我有一张这样的表
ID | DATETIME | VALUE
1 | 2011-12-10 01:22:46 | NO
例如真正的DATETIME现在是2011-12-10 00:22:46 我希望当DATETIME与桌面上的DATETIME相同时,VALUE更新为YES。
怎么做?
答案 0 :(得分:1)
使用jquery ajax对服务器进行检测,每次让半秒钟才能使用,如果发生延迟
1-下载jquery或在线提供
2-在一个始终打开的页面中右边这个我将给出另一个解决方案,如果它没有打开
function updater()
{
$.post('ajaxChecker.php');
}
setInterval( "updater()", 50 );
上面的代码向名为ajaxChecker.php的页面发送请求 然后您需要在该页面中连接到数据库 我现在就假设你 并在那 提出查询
$query = mysql_query("UPDATE tlbname SET `value` = 'YES' WHERE `datetime` = NOW()
“);
请检查mysql的保留字,如果不能修改它们,请确保它们在``
之间阅读cronjobs来启动它
答案 1 :(得分:0)
如果你包括时间hh:mm:ss它将很难匹配..但否则它会像:
update tlbname set value = 'YES' where datetime = @datetime
答案 2 :(得分:0)
或许最好的解决方法是不要更新列:
ALTER TABLE tblname DROP COLUMN value;
ALTER TABLE tblname RENAME TO basetbl;
CREATE VIEW tblname AS
SELECT id,
`datetime`,
IF(NOW() >= `datetime`, 'YES', 'NO') AS value
FROM basetbl;
现在`value`
永远不会出错,并且它会在当前时间与`datetime`
中的yyyy-mm-dd_hh:mm:ss匹配的瞬间更新。
或者,可以使用查找IF(NOW() >= `datetime`, ...)
的查询将此动态计算推送到PHP代码中。
天真的方法存在的问题,即每分钟或更长时间发出UPDATE
的问题,是您会错过更新。任何定期的UPDATE
计划 - crond,一个AJAX帮助程序,MySQL的EVENT计划程序,无论如何 - 最终都会错过任何一个节拍。也许操作系统崩溃,或MySQL重新启动,或者非常合理地,MySQL变得如此负载其他查询,UPDATE
需要花费一分多钟才能完成。
即使UPDATE
被修改为追溯更正错过的更新,仍会有一个`value`
错误的窗口。