Du kan tilføje en UNIK begrænsning til din tabel. Dette er en engangsoperation - du behøver ikke at gøre dette hver gang dit script kører, det er en ændring af tabelstrukturen. Kør dette i dit MySQL-administrationsværktøj (f.eks. phpMyAdmin, Navicat, HeidiSQL, hvad-har-du):
ALTER TABLE awards_2009_votes ADD UNIQUE (member_id);
Efter denne ændring vil det ikke være muligt at tilføje en anden stemme med det samme medlems-id - INDSÆT (eller OPDATERING) vil mislykkes.
Fordelen her er, at kontrollen udføres automatisk i databasen, så du ikke behøver at bekymre dig om 1) at tjekke for dubletter med din kode eller 2) at folk tilføjer flere stemmer manuelt.
Som @middaparka
siger, du skal bruge INSERT IGNORE
for at undgå en "duplicate key"-fejl:
$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
}