Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用于更新下一行的Mysql查询_Php_Mysql - Fatal编程技术网

Php 用于更新下一行的Mysql查询

Php 用于更新下一行的Mysql查询,php,mysql,Php,Mysql,我需要每天显示一条新闻提示和我的表格结构,如下所示 | id | ndate |News Tip | +------+----------------------+ | 1541 | NULL | news1 | | 1545 | 14-10-2010 | news2 | | 1567 | NULL | news3 | | 1568 | NULL | news4 | | 1582 | NULL | news5 |

我需要每天显示一条新闻提示和我的表格结构,如下所示

| id  |  ndate      |News Tip |
+------+----------------------+
| 1541 | NULL       | news1   |
| 1545 | 14-10-2010 | news2   | 
| 1567 | NULL       | news3   |
| 1568 | NULL       | news4   |
| 1582 | NULL       | news5   |
     ....     ....      
| 1702 | NULL       | news217 |
查询
select*from newstip where ndate=NULL
并检查数据是否与当前日期匹配。如果没有,我需要将下一行(本例中为1567)更新为当前日期,将所有其他行更新为NULL

id是唯一的,但没有顺序,因此无法进行下面的查询

update newstip set ndate='15-10-2010' where id=(id+1); //failure

如何解决这种情况?。我正在使用php来完成这个过程

如果您的
id
将变大,您可以查询下一行并更新它。就你而言:

UPDATE newstip SET ndate = '15-10-2010' WHERE id > 1545 ORDER BY id ASC LIMIT 1

我应该提到的是,此语句不是复制安全的。

如果您的
id将变大,您可以查询下一行并更新它。就你而言:

UPDATE newstip SET ndate = '15-10-2010' WHERE id > 1545 ORDER BY id ASC LIMIT 1

我应该指出,此语句不是复制安全的。

因为最后一整行的
id
存储在
:old\u id

UPDATE `newstip` SET `ndate`=15-10-2010` WHERE `id` > :old_id ORDER BY `id` LIMIT 1;

假设最后一整行的
id
存储在
:old_id

UPDATE `newstip` SET `ndate`=15-10-2010` WHERE `id` > :old_id ORDER BY `id` LIMIT 1;
如果没有记录具有
id>1545
,则不会更新任何内容


如果没有记录具有
id>1545

,则不会更新任何内容。下面是mysql中的一个洞过程,用于更新下面的所有行

创建过程更新()

开始

声明日期=日期(“2010年10月16日”)

声明idd INT

为newstrip中的SELECT id声明cur1游标,其中id>1545 order by id

读循环:循环

FETCH cur1 INTO a;

IF done THEN

  LEAVE read_loop;

END IF;

update newstrip set ndate=dat where id=a;

dat=DATE_ADD(dat,INTERVAL 1 DAY);

端环

下面是mysql中的一个洞过程,用于更新下面的所有行

创建过程更新()

开始

声明日期=日期(“2010年10月16日”)

声明idd INT

为newstrip中的SELECT id声明cur1游标,其中id>1545 order by id

读循环:循环

FETCH cur1 INTO a;

IF done THEN

  LEAVE read_loop;

END IF;

update newstrip set ndate=dat where id=a;

dat=DATE_ADD(dat,INTERVAL 1 DAY);
端环