Php 如何在MySQL上运行实时自动查询

Php 如何在MySQL上运行实时自动查询,php,mysql,Php,Mysql,我有一个名为pending的字段,被声明为布尔值,默认值为0如下: `pending` tinyint(1) NOT NULL DEFAULT '0' 我正在对数据库运行更新查询,以将qpending的状态更改为1,如下所示 $sql = "UPDATE `appointments` SET `pending` = '1' WHERE `appointments`.`id` = 124; 现在我的问题是,有没有办法在30分钟后通过使用如下条件子句自动将pending重新声明为0 //

我有一个名为
pending
的字段,被声明为布尔值,默认值为
0
如下:

`pending` tinyint(1) NOT NULL DEFAULT '0'
我正在对数据库运行更新查询,以将q
pending
的状态更改为
1
,如下所示

$sql = "UPDATE  `appointments` SET  `pending` =  '1' WHERE  `appointments`.`id` = 124;
现在我的问题是,有没有办法在30分钟后通过使用如下条件子句自动将
pending
重新声明为
0

// After 30 Minutes of update!
if (!confirmed){
    $sql = "UPDATE  `appointments` SET  `pending` =  '0' WHERE  `appointments`.`id` = 124;
}
表架构

CREATE TABLE IF NOT EXISTS `appointments` (
  `id` int(6) NOT NULL AUTO_INCREMENT,
  `date` varchar(100) CHARACTER SET utf8 NOT NULL,
  `available` tinyint(1) NOT NULL DEFAULT '1',
  `pending` tinyint(1) NOT NULL DEFAULT '0',
  `confirmed` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

你做错了

使挂起字段不是布尔值而是日期时间,其值为到期时间。然后在select查询中,只需将该值与当前时间进行比较。所以不是

SELECT * FROM appointments WHERE pending = 1
去吧

SELECT * FROM appointments WHERE pending < NOW()
从挂起的约会中选择*

这个解决方案要么简单得多,要么更灵活

你能在问题中包含表架构吗?看看mysql事件[]你想在30分钟后将所有挂起的=1更新为挂起的=0吗?你在使用ubuntu吗?那么,可以有多个ID的最后一次更新挂起?你在使用ubuntu吗?你通常使用你的操作系统提供的任何计划任务机制。谢谢你的提示,但这不是自动运行的!我想我仍然需要手动运行查询,对吗?@Behseini您根本不需要运行任何查询。这就是SQL的工作原理。我认为SQL解决问题的方式与OP想要的不同,但它仍然解决了问题。