sql >> Database teknologi >  >> RDS >> Mysql

PHP/MYSQL tillader kun én stemme pr. medlem?

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
}


  1. Sikkerhedskopiering af SQL-databaser med VDP Advanced SQL Agent

  2. Sikkerhedskopier MySQL-skema med fremmednøgletabelbegrænsninger

  3. Fejl ved omdøbning af en kolonne i MySQL

  4. PHP-formularen uploader ikke fil