आप अपनी तालिका में एक अद्वितीय बाधा जोड़ सकते हैं। यह एक बार का ऑपरेशन है - हर बार आपकी स्क्रिप्ट चलने पर आपको ऐसा करने की ज़रूरत नहीं है, यह टेबल संरचना में बदलाव है। इसे अपने MySQL व्यवस्थापन टूल (जैसे phpMyAdmin, Navicat, HeidiSQL, what-have-you) में चलाएँ:
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
}