Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

जाँच करें कि क्या डालने से पहले डेटाबेस में पंक्ति मौजूद है

बेहतर होगा कि आप अपने कॉलम में जांच और डालने के बजाय डुप्लिकेट डेटा को रोकने के लिए एक बाधा सेट करें।

बस imdbid . पर एक UNIQUE बाधा सेट करें :

ALTER TABLE `requests` ADD UNIQUE `imdbid_unique`(`imdbid`);

ऐसा करने का कारण यह है कि आप एक दौड़ की स्थिति में नहीं आते हैं। ।

जांच पूरी करने और वास्तव में डेटा डालने के बीच एक छोटी सी विंडो है, और उस छोटी विंडो में, डेटा डाला जा सकता है जो सम्मिलित किए जाने वाले डेटा के साथ विरोध करेगा।

समाधान? बाधाओं का प्रयोग करें और $DBH->error() चेक करें सम्मिलन त्रुटियों के लिए। यदि कोई त्रुटि है, तो आप जानते हैं कि एक डुप्लिकेट है और आप तब अपने उपयोगकर्ता को सूचित कर सकते हैं।

मैंने देखा है कि आप इसका उपयोग कर रहे हैं, $DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); . इस मामले में, आपको ->error() check की जांच करने की आवश्यकता नहीं है क्योंकि पीडीओ अपवाद फेंक देगा। बस अपने निष्पादन को इस तरह से आज़माएं और पकड़ें:

$duplicate = false;

try {
    $STH->execute();
} catch (Exception $e) {
    echo "<p>Failed to Request ".$_POST['imdbid']."!</p>";
    $duplicate = true;
}

if (!$duplicate)
    echo "<p>Successfully Requested ".$_POST['imdbid']."! Thanks!</p>";


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 15 उपयोगी MySQL/MariaDB प्रदर्शन ट्यूनिंग और अनुकूलन युक्तियाँ

  2. बैश में MySQL क्वेरी परिणाम से फ़ील्ड कैसे प्राप्त करें?

  3. एसक्यूएल:स्ट्रिंग कैसे करें बराबर नहीं है

  4. हर दिन नहीं होने वाली घटनाओं के लिए दैनिक गणना प्राप्त करना

  5. MySQL-अजगर स्थापित करना