sql >> Databasteknik >  >> RDS >> Mysql

PHP/MYSQL tillåter endast en röst per medlem?

Du kan lägga till en UNIK begränsning till din tabell. Detta är en engångsoperation - du behöver inte göra detta varje gång ditt skript körs, det är en förändring av tabellstrukturen. Kör detta i ditt MySQL-administrationsverktyg (t.ex. phpMyAdmin, Navicat, HeidiSQL, vad-har-du):

ALTER TABLE awards_2009_votes ADD UNIQUE (member_id);

Efter denna ändring kommer det inte att vara möjligt att lägga till en andra röst med samma medlems-ID - INFOGA (eller UPPDATERING) kommer att misslyckas.

Fördelen här är att kontrollen görs automatiskt i databasen, så du behöver inte oroa dig för att 1) ​​leta efter dubbletter med din kod eller 2) att personer lägger till flera röster manuellt.

Som @middaparka säger, du bör använda INSERT IGNORE för att undvika ett "duplicerat nyckel"-fel:

$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. Hur använder jag vårdata jpa för att fråga i jsonb-kolumnen?

  2. Uppföljare:Sammanfogade fält i WHERE LIKE-satsen

  3. NULL vs. "oändlighet" i PostgreSQL-intervalltyper

  4. LEAST() Funktion i PostgreSQL