Mysql
 sql >> база данни >  >> RDS >> Mysql

PHP/MYSQL позволява само един глас на член?

Можете да добавите УНИКАЛНО ограничение към вашата таблица. Това е еднократна операция - не е необходимо да правите това всеки път, когато вашият скрипт се изпълнява, това е промяна в структурата на таблицата. Стартирайте това във вашия инструмент за администриране на MySQL (например phpMyAdmin, Navicat, HeidiSQL, какво-имате):

ALTER TABLE awards_2009_votes ADD UNIQUE (member_id);

След тази промяна няма да е възможно да се добави второ гласуване със същия идентификатор на член - INSERT (или UPDATE) ще бъде неуспешен.

Предимството тук е, че проверката се извършва автоматично в базата данни, така че не е нужно да се притеснявате за 1) проверка за дубликати с вашия код или 2) хора, добавящи няколко гласа ръчно.

Като @middaparka казва, че трябва да използвате INSERT IGNORE за да избегнете грешка "дублиращ ключ":

$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. Symfony 3.4 Няма класове метаданни за обработка Грешка

  2. MySQL не използва индекс за ORDER BY

  3. Получаване на времева марка с MySQL

  4. Получаване на грешка Докато се опитвате да попълните падащото меню на HTML с Mysql данни в Java?

  5. MySQL REPLACE в автоматично увеличен ред