【发布时间】:2010-03-29 06:53:12
【问题描述】:
我在这里尝试做的是:如果 $done 中标识的表 todo 中的记录在列 recurinterval 中有一个值,则重置 date_scheduled 列 ELSE 只需将这些记录的 status_id 列设置为 6。
这是我从 mysql_error() 得到的错误...
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的“CASE recurinterval != 0 AND recurinterval IS NOT NULL THEN SET date_sche”附近使用正确的语法
我怎样才能使这个声明有效?
UPDATE todo
CASE recurinterval != 0 AND recurinterval IS NOT NULL THEN
SET date_scheduled = CASE recurunit
WHEN 'DAY' THEN DATE_ADD(date_scheduled, INTERVAL recurinterval DAY)
WHEN 'WEEK' THEN DATE_ADD(date_scheduled, INTERVAL recurinterval WEEK)
WHEN 'MONTH' THEN DATE_ADD(date_scheduled, INTERVAL recurinterval MONTH)
WHEN 'YEAR' THEN DATE_ADD(date_scheduled, INTERVAL recurinterval YEAR)
END
WHERE todo_id IN ($done)
ELSE
SET status_id = 6 WHERE todo_id IN ($done)
END
在我进行上述修改之前,以下 mySQL 语句运行良好。
UPDATE todo
SET date_scheduled = CASE recurunit
WHEN 'DAY' THEN DATE_ADD(date_scheduled, INTERVAL recurinterval DAY)
WHEN 'WEEK' THEN DATE_ADD(date_scheduled, INTERVAL recurinterval WEEK)
WHEN 'MONTH' THEN DATE_ADD(date_scheduled, INTERVAL recurinterval MONTH)
WHEN 'YEAR' THEN DATE_ADD(date_scheduled, INTERVAL recurinterval YEAR)
END
WHERE todo_id IN ($done)
AND recurinterval != 0
AND recurinterval IS NOT NULL
【问题讨论】:
-
感谢大家,你们都很好地帮助了我。看起来我们都同意 wimvds。 :)
标签: php mysql linux nested case