我在这里尝试做的是:如果 $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