在MySQL 中儲存陣列:另一種方法
為了防止評論評級系統中的多次投票,您希望儲存一組用戶MySQL 欄位中的ID。雖然MySQL 不直接支援這一點,但請考慮以下替代方法:
資料庫架構
建立三個表:
CREATE TABLE comments ( comment_id int, body varchar(100), PRIMARY KEY (comment_id) ); CREATE TABLE users ( user_id int, username varchar(20), PRIMARY KEY (user_id) ); CREATE TABLE comments_votes ( comment_id int, user_id int, vote_type int, PRIMARY KEY (comment_id, user_id) );
範例資料
INSERT INTO comments VALUES (1, 'first comment'); INSERT INTO comments VALUES (2, 'second comment'); INSERT INTO users VALUES (1, 'user_a'); INSERT INTO users VALUES (2, 'user_b'); INSERT INTO comments_votes VALUES (1, 1, 1); INSERT INTO comments_votes VALUES (2, 1, 1);
檢查使用者資格
檢查使用者資格SELECT COUNT(*) FROM comments_votes WHERE comment_id = <comment id> AND user_id = <user id>;
此方法可以防止多次投票,因為comments_votes 表上的主鍵約束可確保唯一性。
防止多次投票
如果使用者已經投票,則根據查詢結果停用系統邏輯中的投票圖示。
以上是如何在不將數組儲存在 MySQL 中的情況下防止評論評級系統中的多次投票?的詳細內容。更多資訊請關注PHP中文網其他相關文章!