मेरे पास 3 कॉलम - आईडी (पीके), पेजआईडी (एफके), नाम वाला एक टेबल है। मेरे पास एक php स्क्रिप्ट है जो तालिका में लगभग 5000 रिकॉर्ड डंप करती है, जिसमें लगभग आधे डुप्लिकेट होते हैं, उसी पृष्ठ आईडी और नाम के साथ। पेज आईडी और नाम का संयोजन अद्वितीय होना चाहिए। PHP में डुप्लिकेट को सहेजने से रोकने का सबसे अच्छा तरीका क्या है क्योंकि मैं php में स्क्रिप्ट के माध्यम से लूप करता हूं?mysql डेटाबेस में डुप्लिकेट प्रविष्टि से बचने का सबसे अच्छा तरीका
उत्तर
प्रथम चरण की मेज पर एक अद्वितीय कुंजी सेट करने के लिए होगा:
ALTER TABLE thetable ADD UNIQUE INDEX(pageid, name);
तो फिर तुम क्या आप क्या करना चाहते है जब वहाँ एक डुप्लिकेट है तय करने के लिए किया है। आपको:
इसे अनदेखा करें?
INSERT IGNORE INTO thetable (pageid, name) VALUES (1, "foo"), (1, "foo");
पहले दर्ज किए गए रिकॉर्ड को ओवरराइट करें?
INSERT INTO thetable (pageid, name, somefield) VALUES (1, "foo", "first") ON DUPLICATE KEY UPDATE (somefield = 'first') INSERT INTO thetable (pageid, name, somefield) VALUES (1, "foo", "second") ON DUPLICATE KEY UPDATE (somefield = 'second')
कुछ काउंटर अपडेट करें?
INSERT INTO thetable (pageid, name) VALUES (1, "foo"), (1, "foo") ON DUPLICATE KEY UPDATE (pagecount = pagecount + 1)
आप पेजआईडी और नाम को MySQL डेटाबेस में एक अद्वितीय अनुक्रमणिका में सेट कर सकते हैं। इस तरह जब आप पंक्तियों को सम्मिलित करते हैं, तो यह एक त्रुटि उत्पन्न करेगा, जिसे PHP द्वारा अनदेखा किया जा सकता है, और आप केवल अगली पंक्ति पर जा सकते हैं।
यह मानता है कि आप पंक्तियों को व्यक्तिगत रूप से सम्मिलित कर रहे हैं। उर्फ:
foreach($large_data as $fields)
{
mysql_query("INSERT INTO TABLE (`Something`) VALUES('".$fields['something']."');
}
जानबूझकर जब आप डुप्लीकेट पंक्तियों मारा mysql_query() पीएचपी चेतावनी फेंक करने के लिए अनुमति तरह का गंदा (यह clutters अपनी लॉग, यह अपेक्षाकृत गहन, संसाधन है आदि) है। खासकर जब उन्हें पहली जगह में रोकना अन्य समाधानों में उल्लिखित MySQL की 'INSERT IGNORE' सुविधा का उपयोग करना उतना आसान है। इसके अतिरिक्त, जब लूप सम्मिलित वाक्यविन्यास उपलब्ध होता है तो लूप में डालना अक्षम होता है। –
एक mysql बिंदु से आप
alter table YOURTABLE add unique index(pageId, name);
कर सकते हैं अपने शब्दों सही है और क्या आप
$already_done = array();
foreach ($records as $record)
{
$unique_hash = md5($record['name'].$record['pageId']);
if (!in_array($unique_hash, $already_done))
{
$already_done[] = $unique_hash;
// sql insert here
}
}
किसी भी तरह से उन चाहिए कर सकते हैं php से करना चाहते हैं क्या तुम ठीक हो
बेशक, अगर स्क्रिप्ट शुरू होने से पहले * पहले से ही रिकॉर्ड्स में रिकॉर्ड्स हैं, तो वे '$ pre_done' में दिखाई नहीं देंगे। –
आप mysql के साथ त्रुटि को भी अनदेखा कर सकते हैं: तालिका में INSERT IGNORE ... यह कुंजी त्रुटि को अनदेखा कर देगा, उस डालने पर छोड़ देगा और अगले पर आगे बढ़ेगा।
- 1. सबसे अच्छा तरीका डेटाबेस
- 2. हैश तालिका से प्रविष्टि को हटाने का सबसे अच्छा तरीका
- 3. लाइव MySQL डेटाबेस संग्रहित करने का सबसे अच्छा तरीका
- 4. MySQL में नियमित अभिव्यक्तियों के लिए उपयोगकर्ता इनपुट से बचने का सबसे अच्छा तरीका क्या है?
- 5. mysql डुप्लिकेट प्रविष्टि त्रुटि कोई डुप्लिकेट प्रविष्टि (php के माध्यम से बल्क लोड)
- 6. सी # सरणी में डुप्लिकेट संचालन से बचने का सबसे प्रभावी तरीका क्या है?
- 7. सबसे अच्छा तरीका है
- 8. डेटाबेस क्वेरी स्ट्रिंग में उद्धरण से बचने का एक अच्छा तरीका है?
- 9. वेब डेटाबेस में स्प्रेडशीट को जोड़ने का सबसे अच्छा तरीका
- 10. कोशिश करने से बचने का सबसे अच्छा तरीका क्या है ... अंत में ... मेरे यूनिट परीक्षणों में?
- 11. MySQL: मैक पते को स्टोर करने का सबसे अच्छा तरीका?
- 12. डेटाबेस संचालित सामग्री का अनुवाद करने का सबसे अच्छा तरीका
- 13. MySQL क्लॉज का उपयोग करने का सबसे अच्छा तरीका "ActiveRecord
- 14. MySQL बड़े डेटाबेस से डुप्लिकेट हटाएं त्वरित
- 15. डेटाबेस परिवर्तनों का प्रबंधन करने का सबसे अच्छा तरीका
- 16. MySQL डेटाबेस में एक सरणी को स्टोर करने का सबसे अच्छा तरीका?
- 17. mysql डेटाबेस में स्टोर करने के लिए पाठ को एन्क्रिप्ट करने का सबसे अच्छा तरीका
- 18. एक स्ट्रिंग (PowerShell) में HTML- विशिष्ट वर्णों से बचने का सबसे अच्छा तरीका क्या है?
- 19. स्रोत नियंत्रण में MySQL डेटाबेस को संग्रहीत करने का सबसे अच्छा तरीका क्या है?
- 20. एक MySQL डेटाबेस में समय पर अवधि को स्टोर करने का सबसे अच्छा तरीका?
- 21. सबसे अच्छा तरीका है
- 22. डेटाबेस कॉपी करने का सबसे अच्छा तरीका क्या है?
- 23. एक MySQL डेटाबेस कॉपी करने का सबसे आसान तरीका?
- 24. mysql डेटाबेस से केवल डुप्लिकेट रिकॉर्ड का चयन करें
- 25. "साझाकरण" से बचने का एक अच्छा तरीका है?
- 26. सबसे अच्छा तरीका है
- 27. पीडीओ mysql स्थिर कनेक्शन वर्ग बनाने का सबसे अच्छा तरीका?
- 28. डेटाबेस में एकल गैर-दोहराने वाले डेटा को स्टोर करने का सबसे अच्छा तरीका क्या है?
- 29. कईToMany डुप्लिकेट प्रविष्टि त्रुटि
- 30. PHP के साथ MySQL से कनेक्ट करने का सबसे अच्छा तरीका सुरक्षित रूप से
बिग धन्यवाद, यह स्टैक ओवरलो पर कुछ समय के लिए शोध किए गए एक प्रश्न का एक उत्कृष्ट उत्तर था। – capfu