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

PHP/MYSQL che consente un solo voto per membro?

Puoi aggiungere un vincolo UNICO alla tua tabella. Questa è un'operazione una tantum:non è necessario farlo ogni volta che viene eseguito lo script, è una modifica alla struttura della tabella. Eseguilo nel tuo strumento di amministrazione MySQL (ad es. phpMyAdmin, Navicat, HeidiSQL, what-have-you):

ALTER TABLE awards_2009_votes ADD UNIQUE (member_id);

Dopo questa modifica, non sarà possibile aggiungere un secondo voto con lo stesso ID membro:l'INSERTO (o AGGIORNAMENTO) avrà esito negativo.

Il vantaggio qui è che il controllo viene eseguito automaticamente nel database, quindi non devi preoccuparti di 1) verificare la presenza di duplicati con il tuo codice o 2) persone che aggiungono più voti manualmente.

Come @middaparka dice, dovresti usare INSERT IGNORE per evitare un errore di "chiave duplicata":

$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
}