ここで私がやろうとしているのは、$ doneで識別されるテーブルtodoのレコードの列recurintervalに値がある場合、date_scheduled列をリセットします。ELSEはそれらのレコードのstatus_id列を6に設定します。
これは私がmysql_error()から得るエラーです...
SQL構文にエラーがあります。MySQLサーバーのバージョンに対応するマニュアルで、2行目の「CASErecurinterval!= 0 AND recurinterval IS NOT NULLTHENSETdate_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