Speichern von Arrays in MySQL: Ein alternativer Ansatz
Um Mehrfachabstimmungen in einem Kommentarbewertungssystem zu verhindern, möchten Sie ein Array von Benutzern speichern IDs in einem MySQL-Feld. Obwohl dies von MySQL nicht direkt unterstützt wird, sollten Sie den folgenden alternativen Ansatz in Betracht ziehen:
Datenbankschema
Erstellen Sie drei Tabellen:
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) );
Beispiel Daten
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);
Überprüfung der Benutzerberechtigung
Um festzustellen, ob ein Benutzer bereits für einen bestimmten Kommentar abgestimmt hat, verwenden Sie eine einfache Abfrage:
SELECT COUNT(*) FROM comments_votes WHERE comment_id = <comment id> AND user_id = <user id>;
Dieser Ansatz verhindert Mehrfachstimmen, da die Primärschlüsseleinschränkung für die Tabelle comments_votes dafür sorgt Einzigartigkeit.
Verhindern mehrerer Abstimmungen
Wenn der Benutzer bereits abgestimmt hat, deaktivieren Sie die Abstimmungssymbole in der Systemlogik basierend auf dem Abfrageergebnis.
Vorteile dieses Ansatzes
Das obige ist der detaillierte Inhalt vonWie kann man Mehrfachstimmen in einem Kommentarbewertungssystem verhindern, ohne Arrays in MySQL zu speichern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!