0

私は現在、ユーザーが特定の動画に投票を追加できる投票システムを作成しようとしています。データベーステーブルから現在の投票番号を取得できますが、この合計に1を追加し、ボタンがクリックされたときにこの値をデータベースに再挿入する方法がわかりません。どんな助けでも大歓迎です!

4

3 に答える 3

8

count(*)すべての投票の履歴を保持してから、とを使用して合計を計算する方がはるかに優れていgroup byます。

select answer, count(*) from vote group by answer;

これにより、2 人が同時に投票しようとした場合の競合状態を回避できます。また、後で疑わしい投票パターンを探すために使用できる、ユーザーのユーザー ID、セッション ID、IP アドレスなどの列を投票テーブルに追加できます。

于 2013-02-24T23:00:21.243 に答える
2

次のような mysql クエリを使用します。

UPDATE table SET voteCount = voteCount+1 WHERE video = ?
于 2013-02-24T23:02:54.987 に答える
1

投票数とユーザー投票の別の表。

たとえば、データベース内の独自のテーブルに投票を追加してみることができます。

INSERT INTO votes_tables (id, user_id, video_id, vote_up, vote_down, date) VALUES (NULL, '5', '10', '1', '', NOW());

ビデオ ストアのみのビデオ投票の値のリストがある別のテーブル (インクリメント、デクリメント ステータス):

賛成:

UPDATE votes_table SET votes = votes + 1 WHERE video_id = ?

反対票:

UPDATE votes_table SET votes = votes - 1 WHERE video_id = ?

この方法では、誰がいつ投票したか + 統計の投票を分けることができます。このメソッドは回避を使用してGROUP_BYおり、データの結果を返すまでの速度を向上させることができます。

COUNT(*) または SUM() を使用すると、速度が低下する可能性があります。

count(*) の行は高速化のために INDEX にする必要があるため、パフォーマンスの高速化のためにテーブル内のデータのインデックスが増加しました。パフォーマンスの議論: MySQL で sum() を高速化することは可能ですか?

于 2013-02-24T23:03:59.323 に答える