2012-05-07 13 views
0

私は、作業しているソケットサーバで動作する基本ログイン機能を備えたColdFusion 9でコード化されたCMSを持っています。最近、私はVIPでの支払いを設定しましたが、2ヶ月経過しても購読を削除するSQLはありません。ここに私の基本的な要求があります。 date_purchasedのタイムスタンプ値が2ヶ月の場合、自動的に実行するSQLが必要です。セッションユーザー(ユーザーのみ)のvip_purchasesの行を削除し、vipの列を0usersに更新する必要があります。単純な更新機能MySQL

セッションのユーザー名にのみ、タイムスタンプが2週間の場合にのみ実行し、VIPの値が1の場合のみ実行する必要があります。 私はの線に沿って考えていた:

update users set vip = 0 where username = session.username if vip = 1 if date_purchased = 2 months old 

私は、これはちょうどそれがもう少し明確にしようとしたSQL、ではありません実現しています。

答えて

1

閉じる。あなたが好きな時間枠の条件でWHEREの最後の部分(today -部分)を交換する必要があります:)

UPDATE users 
SET vip = 0 
WHERE username = sessionname 
AND vip = 1 
AND date_purchased <= (today - number of days wanted) 

。投稿が混乱しています。同じ文脈で2 weeks old2 months oldが記載されています。

+0

申し訳ありませんが、私は両方の測定単位を使用していたことを認識していませんでした。ありがとう! – Fuselight

1

Coldfusion(MySQLデータベースの内部ではなく)でこの再起動タスクを実行する予定がある場合は、ColdFusion Administrator経由でスケジュールされたタスクを設定する必要があります。タスクは毎日1回スクリプトを起動して古いアカウントをすべてクリーンアップすることができます。

これが決まると、タスクを含む.cfmファイルまたは.cfcファイルを作成できます。

これは、ロジックを実行する場所に応じてcfqueryまたはcfstoredprocを含む単純なファイルにすることができます。 CfqueryはColdfusionのWebサーバ上でロジックを実行し、cfstoredprocはデータベースサーバに対してMySQLロジックを実行するように要求します。ストアドプロシージャとして実行するのが最善でしょう。

この場合、ユーザー名を確認する必要はありません。単にSELECTを実行すると、vip = 1かつdate_purchasedの有効期限が切れたすべてのユーザーがループオーバーして更新されます。

+0

私は最初の答えを使用していますが、私はあなたの提案をどこに置くことができるかというアイディアを持っています!みんなありがとう。 – Fuselight

関連する問題