Mysql
 sql >> Baza danych >  >> RDS >> Mysql

PHP/MYSQL zezwala na tylko jeden głos na członka?

Do tabeli można dodać ograniczenie UNIQUE. Jest to jednorazowa operacja - nie musisz tego robić za każdym razem, gdy uruchamiasz swój skrypt, jest to zmiana struktury tabeli. Uruchom to w swoim narzędziu administracyjnym MySQL (np. phpMyAdmin, Navicat, HeidiSQL, co masz):

ALTER TABLE awards_2009_votes ADD UNIQUE (member_id);

Po tej zmianie nie będzie można dodać drugiego głosu z tym samym identyfikatorem członka - WSTAWIANIE (lub AKTUALIZACJA) nie powiedzie się.

Zaletą jest to, że sprawdzanie odbywa się automatycznie w bazie danych, więc nie musisz się martwić 1) sprawdzaniem duplikatów za pomocą kodu lub 2) osobami dodającymi wiele głosów ręcznie.

Jako @middaparka mówi, powinieneś użyć INSERT IGNORE aby uniknąć błędu „zduplikowanego klucza”:

$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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Laravel przy użyciu klauzuli where w metodzie withCount

  2. Przechowywanie wartości szesnastkowych w postaci binarnej w MySQL

  3. Kod błędu:1062. Zduplikowany wpis „1” dla klucza „PRIMARY”

  4. Jak uzyskać następny/poprzedni rekord w MySQL?

  5. Jak ponownie połączyć utracone połączenia za pomocą EclipseLink?