sql >> Database >  >> RDS >> Mysql

PHP/MYSQL staat slechts één stem per lid toe?

U kunt een UNIEKE beperking aan uw tabel toevoegen. Dit is een eenmalige bewerking - u hoeft dit niet elke keer te doen als uw script wordt uitgevoerd, het is een wijziging in de tabelstructuur. Voer dit uit in uw MySQL-beheertool (bijv. phpMyAdmin, Navicat, HeidiSQL, what-have-you):

ALTER TABLE awards_2009_votes ADD UNIQUE (member_id);

Na deze wijziging is het niet mogelijk om een ​​tweede stem toe te voegen met hetzelfde lid-ID - de INSERT (of UPDATE) zal mislukken.

Het voordeel hiervan is dat de controle automatisch in de database wordt gedaan, zodat u zich geen zorgen hoeft te maken over 1) het controleren op duplicaten met uw code of 2) mensen die handmatig meerdere stemmen toevoegen.

As @middaparka zegt, moet je INSERT IGNORE . gebruiken om een ​​"dubbele sleutel"-fout te voorkomen:

$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. Oracle JDeveloper gebruiken met MySQL Database Service op Oracle Cloud Platform, deel 3

  2. Node.js MySQL heeft een permanente verbinding nodig

  3. Som rijen van verschillende voorwaarden in Mysql

  4. Slaapstand - ClassNotFoundException:com.mysql.jdbc.Driver