Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PHP/MYSQL erlaubt nur eine Stimme pro Mitglied?

Sie können Ihrer Tabelle eine UNIQUE-Einschränkung hinzufügen. Dies ist ein einmaliger Vorgang - Sie müssen dies nicht jedes Mal tun, wenn Ihr Skript ausgeführt wird, es handelt sich um eine Änderung der Tabellenstruktur. Führen Sie dies in Ihrem MySQL-Verwaltungstool aus (z. B. phpMyAdmin, Navicat, HeidiSQL, what-have-you):

ALTER TABLE awards_2009_votes ADD UNIQUE (member_id);

Nach dieser Änderung ist es nicht mehr möglich, eine zweite Stimme mit derselben Mitglieds-ID hinzuzufügen - das EINFÜGEN (oder UPDATE) schlägt fehl.

Der Vorteil hierbei ist, dass die Überprüfung automatisch in der Datenbank erfolgt, sodass Sie sich keine Gedanken darüber machen müssen, 1) mit Ihrem Code nach Duplikaten zu suchen oder 2) Personen manuell mehrere Stimmen hinzuzufügen.

Als @middaparka sagt, Sie sollten INSERT IGNORE verwenden um einen „Duplicate Key“-Fehler zu vermeiden:

$sql_query = mysql_query("INSERT IGNORE INTO awards_2009_votes (`member_id`, `region`, `coach`, `official`, `volunteer`, `young_volunteer`) VALUES ('$memberid', '$region', '$coach', '$official', '$volunteer', '$young_volunteer')") or die (mysql_error());
if (mysql_insert_id()) {
    // row was inserted - vote added
} else {
    // row was not inserted - already voted
}