Do tabeli można dodać ograniczenie UNIQUE. Jest to jednorazowa operacja - nie musisz tego robić za każdym razem, gdy uruchamiasz swój skrypt, jest to zmiana struktury tabeli. Uruchom to w swoim narzędziu administracyjnym MySQL (np. phpMyAdmin, Navicat, HeidiSQL, co masz):
ALTER TABLE awards_2009_votes ADD UNIQUE (member_id);
Po tej zmianie nie będzie można dodać drugiego głosu z tym samym identyfikatorem członka - WSTAWIANIE (lub AKTUALIZACJA) nie powiedzie się.
Zaletą jest to, że sprawdzanie odbywa się automatycznie w bazie danych, więc nie musisz się martwić 1) sprawdzaniem duplikatów za pomocą kodu lub 2) osobami dodającymi wiele głosów ręcznie.
Jako @middaparka
mówi, powinieneś użyć INSERT IGNORE
aby uniknąć błędu „zduplikowanego klucza”:
$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
}