sql >> Base de Datos >  >> RDS >> Mysql

¿PHP/MYSQL solo permite un voto por miembro?

Puede agregar una restricción ÚNICA a su tabla. Esta es una operación de una sola vez; no necesita hacer esto cada vez que se ejecuta su script, es un cambio en la estructura de la tabla. Ejecute esto en su herramienta de administración de MySQL (por ejemplo, phpMyAdmin, Navicat, HeidiSQL, etc.):

ALTER TABLE awards_2009_votes ADD UNIQUE (member_id);

Después de este cambio, no será posible agregar un segundo voto con la misma ID de miembro; la INSERCIÓN (o ACTUALIZACIÓN) fallará.

La ventaja aquí es que la verificación se realiza automáticamente en la base de datos, por lo que no tiene que preocuparse por 1) buscar duplicados con su código o 2) personas que agregan varios votos manualmente.

Como @middaparka dice que deberías usar INSERT IGNORE para evitar un error de "clave duplicada":

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