0

int の配列を格納する必要があります。今私の問題は、かなりの回数実行される操作があるため、1 つのクエリに制限したいということです。そのクエリでは、配列から特定の int に int を追加する必要があります。

特定のページに費やされた時間のタイマー用です。現在、同じフィールド内のすべてのページをカウントするのは単なる一般的なカウンターであるため、私が行う必要があるのは

UPDATE user SET active = active+$totaltime WHERE id=:id

$totaltime は最後のチェックとその後の時間差です。特定のページを個別に保存したいと思います。問題は、ページ数が正確にわからないことです。serializeの使用を考えましたが、2 つのクエリを何度も実行する必要があり、良い解決策とは思えません。

そうする他の方法はありますか?

4

1 に答える 1

1

必要なのは、各レベルの各ユーザーに関連付けられたアクティブ時間を追跡するレベル用の個別のテーブルです。

このテーブルをuserlevelsと呼び、次の列を指定します。

userid INT
levelid INT
active INT

ユーザーとレベルの特定の組み合わせに対して 1 つのエントリしか存在できないため、主キーはuserid列とleveid列の組み合わせにする必要があります。

次に、ユーザーが特定のレベルで費やした時間を更新したい場合は、次のようにします。

INSERT INTO userlevels (userid,levelid,active)
VALUES (:userid,:levelid,$totaltime)
ON DUPLICATE KEY UPDATE active=active+$totaltime;

これにより、ユーザーが以前にそのレベルに行ったことがない場合はテーブルに新しいエントリが作成され、エントリが既にある場合はアクティブな時間が追加されます。

これは mysql 固有の構文ですが、呼び出しが異なる他のデータベースでも同じことが実現できます。

于 2013-06-30T00:35:31.087 に答える