दिलचस्प पोस्ट
विंडोज 7 और विस्टा यूएसी – सी # में प्रोग्रामेंटल रूप से अनुरोध की ऊंचाई LINQ में SQL ISNULL के समतुल्य? इनपुट तत्व के लिए कर्सर या टेक्स्ट स्थिति पिक्सल में प्राप्त करें एसक्यूएल सर्वर में स्ट्रिंग से सभी गैर-वर्णमाला अक्षरों को कैसे पट्टी करना है? पायथन अनुरोध। एक्सप्शन। कनेक्शन एरे: कनेक्शन "बेस्टटैटसलाइन" निरस्त कर दिया गया कैसे एचटीटीपी referer धोखा VBA में स्ट्रिंग अर्रे की घोषणा और आरंभ करें कोई अंतर नहीं के साथ संख्याओं का एक क्रम समूह करने के लिए LINQ का उपयोग करें संपत्ति से फाइल पढ़ें वेबकिट क्या है और यह सीएसएस से कैसे संबंधित है? सी # धागा सुरक्षा प्राप्त / सेट के साथ बाश में हत्या के बाद समाप्त संदेश को दबाने के लिए कैसे? जावा में कोई रास्ता तय करने के लिए क्या कोई पथ एक फ़ाइल बनाने का प्रयास किए बिना वैध है या नहीं? सबस्ट्रस्ट और सबस्ट्रिंग के बीच अंतर क्या है? कैसे कस्टम बटन से बटन की तरह फेसबुक ट्रिगर करने के लिए?

एसक्यूएल – अगर वर्तमान में अद्यतन करें

मैं क्या करने की कोशिश कर रहा हूं INSERT ग्राहकों को अपने डेटाबेस में, लेकिन IF EXISTS यह IF EXISTS पंक्ति को UPDATE , तो एक नई पंक्ति में ELSE INSERT INTO

बिल्कुल मैं पहले डेटाबेस से कनेक्ट और यूआरएल स्ट्रिंग से $name , $email और $birthday प्राप्त करें।

 $con=mysqli_connect("localhost","---","---","---"); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $name=$_GET['name']; $email=$_GET['email']; $birthday=$_GET['birthday']; 

यह काम करता है, लेकिन सिर्फ नई पंक्ति जोड़ती है;

 mysqli_query($con,"INSERT INTO subs (subs_name, subs_email, subs_birthday) VALUES ('$name', '$email', '$birthday')"); mysqli_close($con); 

यहां मैंने जो कोशिश की है;

 mysqli_query($con,"INSERT INTO subs (subs_name, subs_email, subs_birthday) VALUES '$name', '$email', '$birthday' ON DUPLICATE KEY UPDATE subs_name = VALUES($name), subs_birthday = VALUES($birthday)"); mysqli_close($con); 

तथा

 mysqli_query($con,"IF EXISTS (SELECT * FROM subs WHERE subs_email='$email') UPDATE subs SET subs_name='$name', subs_birthday='$birthday' WHERE subs_email='$email' ELSE INSERT INTO subs (subs_name, subs_email, subs_birthday) VALUES ('$name', '$email', '$birthday')"); mysqli_close($con); 

तथा

 mysqli_query($con,"IF NOT EXISTS(SELECT * FROM subs WHERE subs_email='$email') Begin INSERT INTO subs (subs_name, subs_email, subs_birthday) VALUES ('$name', '$email', '$birthday') End"); mysqli_close($con); 

लेकिन उनमें से कोई भी काम नहीं करता, मैं क्या कर रहा हूँ गलत?

कोई भी मदद बहुत ही सराहनीय होगी!

Solutions Collecting From Web of "एसक्यूएल – अगर वर्तमान में अद्यतन करें"

  1. अपने subs_email कॉलम पर एक UNIQUE बाध्य बनाएँ, अगर कोई पहले से मौजूद नहीं है:

     ALTER TABLE subs ADD UNIQUE (subs_email) 
  2. INSERT ... ON DUPLICATE KEY UPDATE उपयोग INSERT ... ON DUPLICATE KEY UPDATE :

     INSERT INTO subs (subs_name, subs_email, subs_birthday) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE subs_name = VALUES(subs_name), subs_birthday = VALUES(subs_birthday) 

आप INSERT के INSERT भाग से स्तंभ मूल्यों को संदर्भित करने के लिए UPDATE क्लॉज़ में VALUES (col_name) फ़ंक्शन का उपयोग कर सकते हैं … पर डुप्लिकेट की कुंजी अद्यतन – dev.mysql.com

  1. ध्यान दें कि मैंने स्ट्रिंग लीटरल्स के स्थान पर पैरामीटर प्लेसहोल्डर्स का उपयोग किया है, क्योंकि वास्तव में एसक्यूएल इंजेक्शन हमलों से बचाव के लिए मानकीकृत कथन का प्रयोग करना चाहिए।